「Java」「JAVA」字节流、字符流、缓冲流、转换流、内存流、字符编码( 三 )


FilterInputStream子类:

  • DataInputStream:用于从流中读取基本类型的数据 , 比如:char、int、long等 , 往往与DataOutputStream配合使用;
  • BufferedInputStream:代表“缓冲区” , 可以将数据暂存在缓冲区 , 使用它可以防止每次读取都进行实际的写操作;
  • LineNumberInputStream:追踪输入流中的行号 , 可做调试用;
  • PushbackInputStream:能弹出一个字节的缓冲区 , 能够将文件的最后一个字符返回(操作系统使用-1表示磁盘文件的结尾标记) , 通常作为编译器的扫描器 , 往往被编译器调用;
FilterOutputStream子类:
  • DataOutputStream:用于从流中写出基本类型的数据 , 比如:char、int、long等 , 往往与DataInputStream配合使用;
  • PrintStream:用于格式化输出 , 比如:java 的运行控制台打印;能够与DataOutputStream相互配合使用:DataOutputStream负责数据的存储 , PrintStream负责数据的显示;
  • BufferedOutputStream:代表“缓冲区” , 可以将数据暂存在缓冲区 , 使用它可以防止每次都进行实际的写操作;可以使用flush()方法将缓冲区数据一次性写出;
同样 , 在Reader 和 Writer中也提供了与之对应的类 , 详细如下:
文件过滤器 子类
字节流字节流又分字节输入流(InputStream)和字节输出流(OutputStream) , 分别对应读和写;
字节输入流:FileInputStream , 字节输入流的使用案例代码如下:
字节输入流的使用案例代码
字节输入流在读取数据时使用的是read()方法 , 该方法还有另外的重载方法:
字节输入流在读取数据时使用的是read()方法
字节输出流:FileOutputStream , 字节输出流的使用案例代码如下:
字节输出流的使用案例代码
与字节输入流在读取数据时使用的read()方法相对应的 , 字节输出流也提供了对应的写出数据的方法:write() , 该方法也有一些重载方法:
字节输出流也提供了对应的写出数据的方法
注意:字节流读写中的数据类型是字节数据类型(byte[
) 。
案例1 , 使用字节流完成文件拷贝任务 。
案例1 , 使用字节流完成文件拷贝任务
字符流字符流又分字符输入流(Reader)和字符输出流(Writer) , 分别对应文件读和写;需要注意的是:字符流读写中的数据类型是字符数据类型(char[
) , 区别于字节流中的字节类型(byte[
) 。
字符输入流 , FileReader , 字符输入流的使用案例代码如下:
字符输入流的使用案例代码
字符输入流在读取数据时使用的是read()方法 , 该方法还有另外的重载方法:
字符输入流在读取数据时使用的read()方法
字符输出流 , FileWriter , 字符输出流的使用案例代码如下:
字符输出流的使用案例代码
字符输出流在读取数据时使用的是write()方法 , 该方法还有另外的重载方法:
字符输出流在读取数据时使用的write()方法
案例2 , 使用字符流完成文件拷贝任务
案例2 , 使用字符流完成文件拷贝任务
文件拷贝
案例3 , 使用流完成Java 代码动态编译、运行
buildJavaCode
compileJavaCode
runJavaCode
缓冲区在上述的字符输出流的使用案例中 , 使用了flush()方法 , 该方法有何作用呢?
因为计算机访问外部设备(磁盘文件)时 , 要比直接访问内存慢很多 , 如果每次调用write()方法都要直接把数据写出到磁盘文件中 , CPU会花更多的时间 , 计算机执行性能会大大降低 。


推荐阅读