一、字节流

FileOutputStream是OutputStream 的直接子类
FileInputStream也是InputStream的直接子类

二、文本文件的读写

2.1、字节输入流

Test.txt文件内容
abcdefg
package com.pb.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; /*
* FileInputStreamDemo读取文件
*/
public class FileInputStreamDemo1 { public static void main(String[] args) {
//1.声明文件对象,也可以跳过此步直接在第2步中写
File f=new File("d:"+File.separator+"test"+File.separator+"test.txt");
//FileInputStream fis=new FileInputStream("d:/test/hello.txt");
try {
//2.创建FileInputStream对象并将file对象传入
FileInputStream fis=new FileInputStream(f);
//3.定义整型变量用来存放内容
int date;
//4先查看文件可以读取的字节类available()方法获取文件的字节数
System.out.println("可读取的字节数:"+fis.available());
System.out.println("=========开始读取文件==========");
//5读取文件read()方法
System.out.println("========没有转换前输出=======");
while((date=fis.read())!=-1){ //!=-1说明文件还有内容=-1时,就说明文件内容读完结束 System.out.println(date+"\t"); }
System.out.println("=======文件读取结束=========");
//关闭流
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} } }

结果:

可读取的字节数:7
=========开始读取文件==========
========没有转换前输出=======
97
98
99
100
101
102
103
=======文件读取结束=========

结果:并不是文件中的内容

修改上面的文件:

package com.pb.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; /*
* FileInputStreamDemo读取文件
*/
public class FileInputStreamDemo1 { public static void main(String[] args) {
//1.声明文件对象,也可以跳过此步直接在第2步中写
File f=new File("d:"+File.separator+"test"+File.separator+"test.txt");
//FileInputStream fis=new FileInputStream("d:/test/hello.txt");
try {
//2.创建FileInputStream对象并将file对象传入
FileInputStream fis=new FileInputStream(f);
//3.定义整型变量用来存放内容
int date;
//4先查看文件可以读取的字节类available()方法获取文件的字节数
System.out.println("可读取的字节数:"+fis.available());
System.out.println("=========开始读取文件==========");
//5读取文件read()方法
System.out.println("========转换后转出=======");
while((date=fis.read())!=-1){ //!=-1说明文件还有内容=-1时,就说明文件内容读完结束
char c=(char)date;
System.out.println(c+"\t");
}
System.out.println("=======文件读取结束=========");
//6.关闭流
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} } }

结果:

可读取的字节数:7
=========开始读取文件==========
========转换后转出=======
a
b
c
d
e
f
g
=======文件读取结束=========

小结:FileInputStream

1.read()读取内容,是返回int值

2.需要转换字符

3.read()方法是单程的,

4.一定要关闭流

2.2、字节输出流

package com.pb.io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner; public class FileOutputStreamDemo1 { public static void main(String[] args) { try {
//1.实例化FileOutputStream对象,在文件的末尾追加内容
FileOutputStream fos=new FileOutputStream("d:/test/test.txt",true);
//2.创建他写入的字符串
Scanner input=new Scanner(System.in);
System.out.println("请输入要写入文件的内容:");
String str=input.next();
//3.将内容转换为字节数组
byte[] bytes=str.getBytes();
//4.将内容写入
fos.write(bytes,0,bytes.length); //3个参数的方法,从0开始到数组结束的全部写入
System.out.println("文件写入结束!");
//5.关闭流
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }

结果:

请输入要写入文件的内容:输入e结束
好好学习,天天向上 hello java!
文件写入结束!

test.txt

abcdefg好好学习,天天向上

在进行写操作时,如果文件不存在,将自动创建这个文件,如果上面没test.txt,将会自动创建这个文件,可以试下,将文件删除再运行

三、综合使用

package pb.io.file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner; /**
* 拷贝文件
* @author 北大青鸟
*
*/
public class CopyFile { public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int date=0;
System.out.print("请输入您要拷贝的源文件:");
String file1=input.next();
System.out.print("请输入您要拷贝的目标位置:");
String file2=input.next();
try {
FileInputStream fis = new FileInputStream(file1);
FileOutputStream fos = new FileOutputStream(file2);
while((date=fis.read())!=-1){//读取文件
  char c=(char)date;
         fos.write(c);
}
fis.close();
fos.close();
System.out.println("拷贝成功!");
} catch (FileNotFoundException e) {
System.out.println("源文件未找到!");
} catch (IOException ex) {
System.out.println(ex.toString());
}
}
}

Java从零开始学三十五(JAVA IO- 字节流)的更多相关文章

  1. Java从零开始学三十八(JAVA IO- 重定向IO)

    一.三个静态变量 java.lang.System提供了三个静态变量 System.in(默认键盘) System.out(默认显示器) System.err 二.重写向方法 System提供了三个重 ...

  2. Java从零开始学三十三四(JAVA IO-流简述)

    一.流概念(stream) File类并不能对文件内容进行读写. 读文件就是指:把文件的内中的数据读取到内存中来 写文件就是指:把内存中的数据写入到文件中去. 通过什么读写文件呢?文件流. 1.1.流 ...

  3. Java从零开始学三十六(JAVA IO- 字符流)

    一.字符流 BufferedReader:BufferedReader是从缓冲区之中读取内容,所有的输入的字节数据都将放在缓冲区之中 BufferedWriter:把一批数据写入到缓冲区,当缓冲区区的 ...

  4. Java从零开始学四十五(Socket编程基础)

    一.网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可 ...

  5. Java从零开始学三十九(对象序列化)

    一.序列化 将对象的状态存储到特定存储介质中的过程 对象序列化,就是把一个对象变为二进制的数据流的一种方法,通过对象序列化可以方便的实现对象的传输或存储.   序列化保存对象的“全景图”,构建对象的“ ...

  6. Java从零开始学三十二(正则表达式)

    一.为什么要有正则 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆份.替换功能. 例如:现在要求判断一个字符串是否由数字组成,则可以有以下的两种做法: 不使用正则完成 使用正则完 ...

  7. Java从零开始学三十(String和StringBuffer类)

    一.StringBuffer连接字符操作 当一个字符串的内容需要被经常改变时就要使用StringBuffer 在StringBuffer中使用append()方法,完成字符串的连接操作   二.Str ...

  8. Java从零开始学二十五(枚举定义和简单使用)

    一.枚举 枚举是指由一组固定的常量组成的类型,表示特定的数据集合,只是在这个数据集合定义时,所有可能的值都是已知的. 枚举常量的名称建议大写. 枚举常量就是枚举的静态字段,枚举常量之间使用逗号隔开. ...

  9. Java进阶(三十五)java int与integer的区别

    Java进阶(三十五)java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象 ...

随机推荐

  1. C#高级编程9-第1章.NET体系结构

    C#与NET的关系 C#编写的所有代码必须使用.NET FrameWork运行 C#是一种语言,但它本身不是.NET的一部分 C#一些特性,.NET不支持,.NET一些特性,C#不支持 公共语言运行库 ...

  2. C#软件license管理(简单软件注册机制)

    最近做了一个绿色免安装软件,领导临时要求加个注册机制,不能让现场工程师随意复制.事出突然,只能在现场开发(离开现场软件就不受我们控了).花了不到两个小时实现了简单的注册机制,稍作整理.        ...

  3. lol匹配算法

    这是Riot的Design Director Tom Cadwell专门为中国玩家写的解说匹配系统工作原理的帖子. 同一时候为了让大家更好的理解匹配系统,假设您认为您遇到了特别不公平的匹配,请回复游戏 ...

  4. java基础学习总结——对象转型

    一.对象转型介绍 对象转型分为两种:一种叫向上转型(父类对象的引用或者叫基类对象的引用指向子类对象,这就是向上转型),另一种叫向下转型.转型的意思是:如把float类型转成int类型,把double类 ...

  5. org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection

    org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection 这个问题困扰许久,许久 ...

  6. Delphi-Cross-Socket

    Delphi-Cross-Socket GITHUB:https://github.com/winddriver/Delphi-Cross-Socket # Delphi 跨平台 Socket 通讯库 ...

  7. 使用Dictionary泛型集合封装业务逻辑判断 z

    C#2.0 提供了Dictionary 泛型类,它提供了从一组键到一组值的映射.字典中的每个添加项都由一个值及其相关联的键组成.通过键来检索值的速度是非常快的,接近于 O(1),这是因为 Dictio ...

  8. utils/CCArmatureDefine

    #ifndef __CCARMATUREDEFINE_H__ #define __CCARMATUREDEFINE_H__ //#define _USRDLL 1 #include "coc ...

  9. 【Github教程】史上最全github使用方法:github入门到精通

    原文 http://www.eoeandroid.com/thread-274556-1-1.html git pull 命令 git pull <remote> <branch&g ...

  10. java环境配置错误集锦

    eclipse生成的文件目录 D:\eeworkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps 1.java. ...