一:IO流:
IO流用来处理设备之间的数据传输
Java对数据的操作是通过流的方式
Java用于操作流的对象都在IO包中
流按操作数据分为两种:字符流和字节流
流按流向分为:输入流和输出流。
二:字符流
特点:Writer,Reader
Writer:
用于操作文件的Writer子类对象。FileWriter。后缀名是父类。前缀名是该类对象的功能。
例如:FileWriter fw=new FileWriter("D:\\Test.txt");
创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。而且该文件会被创建到指定目录下。如果该目录下已有同名文件,它将被覆盖。其实该步就是为了明确数据存放地。利用write方法将数据写到流中,利用flush方法刷新缓存中的数据,将数据刷新到目的中去。最好用close方法关闭流资源,关闭之前会刷新一次缓存中的数据。当要续写文件是传递一个true参数,代表不覆盖已有文件,并在已有文件末尾处进行操作。
例如:FileWriter fw=new FileWriter("D:\\Test.txt",true);
flush方法和close方法的区别:flush刷新后流可以继续使用,close方法刷新后,流会关闭。
Reader:
创建一个文件读取流对象,和指定名称的文件相关联,要保证这个文件是存在的,否则会报FileNotFoundException。调用读取流对象的read方法,获取数据信息。
例如:FileReader fr=new FileReader("D:\\Test.txt");
int ch=0;
while(ch=fr.read()){ System.out.println(char(ch)); }
运用实例:
三:字符流的缓冲区
缓冲区的出现提高了对数据的读写效率。 对应的类: BufferedReader BufferedWriter 缓冲要结合流才可以使用。在流的基础上对流进行了增强。
BufferWriter:
创建一个字符写入流对象,为了提高字符写入流的效率,加入了缓冲技术,只要将需要被提高效率的流作为参数传入缓冲区的构造函数即可。
FileWriter fw=new FileWriter("D:\\copy.txt");
BufferedWriter bw=new BufferedWriter(fw);
使用缓冲区要记得使用flush方法,关闭缓冲区就是关闭流对象。
BufferReader:
该缓冲区提供了一个一次读一行的方法readLine(),方便于对文本数据的获取。
运用实例:
四:字节流
字节流和字符流的基本操作是相同的,它不仅可以操作文本数据,还可以操作其他媒体类文件。
运用实例:
转换流:字符流与字节流之间的桥梁,方便了字符流与字节流之间的转换操作。
键盘录入:BufferedReader br= new BufferedReader(new InputStreamReader(System.in))
控制台输出:BufferedWriter bw= new BufferedWriter(new OutputStreamWriter(System.out))
五:流的操作规律
1,想把键盘录入的数据打印到控制台
源:键盘录入。
目的:控制台。
2,
需求:想把键盘录入的数据存到一个文件中
源:键盘
目的:文件
3,
需求:想把一个文件数据打印到控制台
源:文件
目的:控制台
通过两个明确来完成选用流对象
1.明确源和目的。
源:输入流。InputStream Reader
目的:输出流。OutputStreamWriter
2.操作的数据是否是纯文本。
是:字符流。
不是:字节流。
3.当体系明确后,再明确要使用那个具体对象。通过设备来进行区分:
源设备:内存,硬盘,键盘
目的设备:内存,硬盘,控制台