「Java」「JAVA」字节流、字符流、缓冲流、转换流、内存流、字符编码( 三 )
FilterInputStream子类:
- DataInputStream:用于从流中读取基本类型的数据 , 比如:char、int、long等 , 往往与DataOutputStream配合使用;
- BufferedInputStream:代表“缓冲区” , 可以将数据暂存在缓冲区 , 使用它可以防止每次读取都进行实际的写操作;
- LineNumberInputStream:追踪输入流中的行号 , 可做调试用;
- PushbackInputStream:能弹出一个字节的缓冲区 , 能够将文件的最后一个字符返回(操作系统使用-1表示磁盘文件的结尾标记) , 通常作为编译器的扫描器 , 往往被编译器调用;
- DataOutputStream:用于从流中写出基本类型的数据 , 比如:char、int、long等 , 往往与DataInputStream配合使用;
- PrintStream:用于格式化输出 , 比如:java 的运行控制台打印;能够与DataOutputStream相互配合使用:DataOutputStream负责数据的存储 , PrintStream负责数据的显示;
- BufferedOutputStream:代表“缓冲区” , 可以将数据暂存在缓冲区 , 使用它可以防止每次都进行实际的写操作;可以使用flush()方法将缓冲区数据一次性写出;
文件过滤器 子类
字节流字节流又分字节输入流(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会花更多的时间 , 计算机执行性能会大大降低 。
推荐阅读
- 『Java』java数据结构系列——什么是数据结构
- 『Java』马云:成功人跟普通人差不多,但这三点我一定要分享给所有年轻人
- #Java#java线程到底有多少种状态?
- #智能手表#1、初识java-1
- [华为]有朋友问我“JAVA全栈”、“互联网架构师”和“JAVAEE”到底是什么?
- 「javascript」这边走Javascript了解一下
- 「华为」一篇有趣的Java class
- struts@Java面试之项目面试问题——不看面试会后悔的
- 「Java」六面蚂蚁金服,唬住了面试官要了30K;其实Java面试也没那么难
- Java@23种java设计模式之:建造者模式、工厂方法模式、抽象工厂模式!