首页
登录 | 注册

文件字节流、文件字符流、缓冲字节流、缓冲字符流字节数组流、数据流、转换流、对象流的用法及解释

1.文件字节流: FileInputStream,FileOutputStream, 直接链接文件的节点流,作用是处理二进制的文件,将文件通过byte类型的变量中或者数组进行读取和输出。
使用 FileInputStream 读取文件内容
1) abstract int read( );
2) int read( byte b[ ] );
3) int read( byte b[ ], int off, int len );
4) int available( );
5) close( );
使用 FileOutputStream 写内容到文件
1) abstract void write( int b );
2) void write( byte b[ ] );
3) void write( byte b[ ], int off, int len );
4) void flush( );
5) void close( );

2.文件字符流:Reader, Writer, 也是用来读取和写入文件的节点流, 数据源为文件, 以字符类型的数组或者变量作为中转站来操作, 常常用来操作纯文本文件。
使用 Reader 读取文件内容
1) int read( );
2) int read( char [ ]cbuf );
3) int read( char [ ]cbuf, int off, int len );
4) int available( );
5) close( );
使用 Writer 写内容到文件
1) void write( int c );
2) void write( char[]cbuf);
3) abstract void write( char [ ]cbuf, int off, int len );
4) void write(String str);
5) abstract void flush( );
6) void close( );

3.缓冲字节流:BufferedInputStream, BufferedOutputStream, 是用来提高读取和写入效率的处理流.缓冲字节流在中转站与数据源和中转站与目标之间有一个byte类型的数组用来暂时存储字节, 这个数组的size为8192, 这样的处理提高了效率。BufferedInputStream 和 BufferedOutputStream 是处理流(包装流)。
1) 读文件和写文件都使用了缓冲区,减少了读写次数,从而 提高了效率 2) 当创建这两个缓冲流的对象时时,会创建了内部缓冲数组, 缺省使用 32 字节大小的缓冲区.
3) 当读取数据时,数据按块读入缓冲区,其后的读操作则直 接访问缓冲区
4) 当写入数据时,首先写入缓冲区,当缓冲区满时,其中的 数据写入所连接的输出流。使用方法 flush()可以强制将缓 冲区的内容全部写入输出流
5) 关闭流的顺序和打开流的顺序相反.只要关闭高层流即可,关闭高层流其实关闭的底层节点流
6) Flush 的使用:手动将 buffer 中内容写入文件

4.缓冲字符流字节数组流:BufferedReader readLine() 读取一个文本行的数据 BufferedWriter newLine();写入一个行分隔符。使用缓冲字符流是复制文本文件常用的方式。

5.数据流:DataInputStream 和 DataOutputStream
1) 提供了可以存取所有 Java 基础类型数据(如:int,double 等)和 String 的方法。
2) 处理流,只针对字节流,二进制文件
3) 输入流链和输出流链
4) 注意:只要关闭上层流即可

6.转换流:InputStreamReader 和 OutputStreamWriter 处理流 用于将字节流转化成字符流,字符流与字节流之间的桥梁 InputStreamReader 的作用是把 InputStream 转换成 Reader OutputStreamWriter 的作用是把 OutputStream 转换成 Writer 存在将字节流转换成字符流的转换流,因为字符流操作文本 更简单 不存在把字符流转换成字节流的转换流,因为没有必要 System.in 代表标准输入,即键盘输入,是 InputStream 的实例。

7.对象流:对象序列化 (Serialization) ObjectOutputStream ,序列化写对象,将对象以“二进 制/字节”的形式写到(文件)。ObjectInputStream(反序列化 、读对象),将 Java 对象转换成字节序列(IO 字节流) 对象反序列化 (DeSerialization) 从字节序列中恢复 Java 对象。



2020 jeepxie.net webmaster#jeepxie.net
10 q. 0.009 s.
京ICP备10005923号