「Java」「JAVA」字节流、字符流、缓冲流、转换流、内存流、字符编码( 二 )
文件流、字节流、字符流、缓冲流、转换流、内存流
文件流: 在Java 中 , 文件流负责操作文件 , 包括读取和写入;
- FileInputStream // 文件的字节输入流;
- FileOutputStream // 文件的字节输出流;
- FileReader // 文件的字符输入流;
- FileWriter // 文件的字符输出流;
在读取数据时 , 字节流的数据存储单位是字节 , 在接收字节流数据时 , 会新建一个字节类型的数组(byte[
)来接收读取的数据;字符流的数据存储单位是字符 , 在接收字符流数据时 , 会新建一个字符类组(char[
)的数据来接收读取的数据 。
InputStream 和 OutputStreamInputStream:
InputStream及其子类的作用是用来表示不同数据源输入数据的类 , 其中封装了用于从数据源中读取数据的操作 。 这些数据源包括:
- 字节数组:byte[
;
- String对象;
- 资源文件:File;
- 资源管道;
- 其他流组成的流序列;
- 其他数据源 , 如网络资源;
- ByteArrayInputStream:将内存的缓冲区当作数据源输入;
- StringBufferInputStream:将String转换成InputStream;
- FileInputStream:从本地文件中读取数据;
- PipedInputStream:资源管道的输入端 , 也是PipedOutputStream的输入源;
- SequenceInputStream:能够将2个或者以上的InputStream合并成一个单一的InputStream;
- FileterInputStream:为文件资源读取提供筛选功能;
OutputStream及其子类的作用是用来表示数据输出将要去向的目标 , 比如:文件、资源管道、字节数组等 。 OutputStream也是因不同的目标有不同的子类:
- ByteArrayOutputStream:在内存中创建缓冲区 , 所有输出的数据都会暂存在缓冲区中;
- FileOutputStream:将数据写出到文件中;
- PipedOutputStream:作为PipedInputStream的输出端 , 与PipedInputStream一起实现资源的“管道化”;
- FileterOutputStream:为文件资源写出提供筛选功能;
Reader 和 Writer及其子类都提供了对Unicode的支持 , 这是他们和InputStream与OutputStream系拓展最大的不同 , 详细如下图所示:
字节流和字符流的api对应
文件过滤器Java IO中提供了过滤器:FilterInputStream和FilterOutputstream , 用于筛选特定的输入流和输出流 。 因为FilterInputStream和FilterOutputstream也是自InputStream与OutputStream继承而来 , 所以他们都可以读写来自InputStream与OutputStream的数据 。
推荐阅读
- 『Java』java数据结构系列——什么是数据结构
- 『Java』马云:成功人跟普通人差不多,但这三点我一定要分享给所有年轻人
- #Java#java线程到底有多少种状态?
- #智能手表#1、初识java-1
- [华为]有朋友问我“JAVA全栈”、“互联网架构师”和“JAVAEE”到底是什么?
- 「javascript」这边走Javascript了解一下
- 「华为」一篇有趣的Java class
- struts@Java面试之项目面试问题——不看面试会后悔的
- 「Java」六面蚂蚁金服,唬住了面试官要了30K;其实Java面试也没那么难
- Java@23种java设计模式之:建造者模式、工厂方法模式、抽象工厂模式!