IO流概述
1、IO流:即InputOutput的缩写。
2、特点:
IO流用来处理设备间的数据传输。
Java对数据的操作是通过流的方式。
Java用于操作流的对象都在IO包中。
流按操作数据分为两种:字节流和字符流。
流按流向分为:输入流和输出流。
注意:流只能操作数据,而不能操作文件。
3、IO流的常用基类:
字节流的抽象基流:InputStream和OutputStream
字符流的抽象基流:Reader和Writer
注:此四个类派生出来的子类名称都是以父类名作为子类名的后缀,以前缀为其功能;如InputStream子类FileInputStream;
Reader子类FileReader
字符流
字符写入流FileWriter
父类Writer中的构造方法被protected修饰表示只给子类访问
字符流中的对象融合了编码表。使用的是默认的编码,即当前系统的编码。
数据的最常见体现形式是:文件
专门用于操作文件的Writer子类对象:FileWriter
close()和flush()区别:
flush()刷新后,流可以继续使用;
close()刷新后,将会关闭流,不可再写入字符流。
(windows系统中的文件内换行用\r\n两个转义字符表示,在linux系统中只用\n表示换行)
//创建一个FileWriter对象,该对象一被创建就必须明确被操作的文件,而且该文件会被创建到指定的目录下,如果该目录下有同名文件,会被覆盖:
FileWriter fw = new FileWriter("demo.txt"); //注意会抛出异常:比如文件路径不存在
//调用write方法,将字符串写入到流中
fw.write("abcde");
//刷新流对象中的缓冲,将其中的数据刷到目的地中
fw.flush();
//关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。因为Java会调用系统中的内容来完成数据的写入,完成之后必须将资源释放,所以close
//将数据刷到目的地中。
//和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。
fw.close();
字符流的缓冲区
缓冲区的出现是为了提高流的操作效率,所以在创建缓冲区对象之前,要有流对象
只要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可
缓冲区要结合流才可以使用,在流的基础上对流的功能进行了增强
原理:缓冲区对象里面封装了数组,不需要再自定义数组了
|
|