字节输入/输出流的介绍
| 字节流 | 所在包 | 作用 |
|---|---|---|
| InputStream/OutputStream | java.io | 抽象类 |
| ByteArrayInputStream/ByteArrayOutputStream | java.io | 字节数组输入/输出流 |
| FileInputStream/FileOutputStream | java.io | 文件输入/输出流 |
| SequenceInputStream | java.io | SequenceInputStream类可以将几个输入流串联在一起,合并为一个输入流 |
| PipedInputStream | java.io | 管道输入/输出流,让多线程可以通过管道进行线程间的通讯 |
| FilterInputStream/FilterOutputStream | java.io | 过滤器字节输入/输出流 |
| ObjectInputStream/ObjectOutputStream | java.io | 对象的序列化流 |
| BufferedInputStream/BufferedOutputStream | java.io | 缓冲输入/输出流 |
| PushbackInputStream | java.io | PushbackInputStream可以预览下一个字节,不需要时可以推回流中 |
| DataInputStream/DataOutputStream | java.io | 是两个与平台无关的数据操作流 |
| PrintStream | java.io | 打印流可以打印任意类型的数据,而不用先转化为字符类型 |
| AudioInputStream | javax.sound.sampled | 用于音频的流 |
| CheckedInputStream/CheckedOutputStream | java.util.zip | |
| InflaterInputStream/DeflaterInputStream | java.util.zip | |
| CipherInputStream/CipherOutputStream | javax.crypto | 对数据进行加密/解密的流 |
| DigestInputStream/DigestOutputStream | java.security | 对数据进行加密/解密的流 |
| ProgressMonitorInputStream | javax.swing | 监视读取某些 InputStream 的进度 |
| LineNumberInputStream | java.io | 已废弃 |
| StringBufferInputStream | java.io | 已经废弃 |
字符输入/输出流
| 字符流 | 包 | 作用 |
|---|---|---|
| Reader/Writer | java.io | 字符读写的抽象类 |
| CharArrayReader/CharArrayWriter | java.io | 字符数组输入/输出流,操作的数据是以字符为单位 |
| PipedReader/PipedWriter | java.io | 字符管道输入/输出流,作用是可以通过管道进行线程间的通讯 |
| FilterReader/FilterWriter | java.io | 字符过滤流与 字节过滤流的原理一致,都是通过操作要过滤的流本身的方法来实现。不同就是字符过滤流是抽象类,而字节过滤流不是 |
| StringReader/StringWriter | java.io | 字符串输入/输出流其本质就是字符串 |
| BufferedReader/BufferedWriter | java.io | 缓冲字符输入/输出流 |
| PushbackReader | java.io | PushbackInputStream可以预览下一个字符,不需要时可以推回流中 |
| LineNumberReader | java.io | LineNumberReader可以支持从任意行读取的功能 |
| FileReader/FileWriter | java.io | 文件字符输入/输出流 |
| InputStreamReader/InputStreamWriter | java.io | 转换流,将字节流转换为字符流 |
| PrintWriter | java.io | 字符类型的打印输出流 |
FilterInputStream/FilterOutputStream
FilterInputStream/FilterOutputStream类及其子类可以动态给流对象添加功能(利用了装饰者模式),例如:
1 | //组合FilterInputStream子类和非FilterInputStream子类 |
Zip
AudioInputStream
音频输入流是具有指定音频格式和长度的输入流。长度用示例帧表示,不用字节表示。提供几种方法,用于从流读取一定数量的字节,或未指定数量的字节。音频输入流跟踪所读取的最后一个字节。可以跳过任意数量的字节以到达稍后的读取位置。音频输入流可支持标记。设置标记时,会记住当前位置,以便可以稍后返回到该位置。
ByteArrayInputStream
ByteArrayInputStream 是字节数组输入流。它继承于InputStream。
它包含一个内部缓冲区,该缓冲区包含从流中读取的字节;通俗点说,它的内部缓冲区就是一个字节数组,而ByteArrayInputStream本质就是通过字节数组来实现的
FileInputStream
SequenceInputStream
可以把多个输入流串联起来读取,先从第一个开始i读取,然后再下一个….
序列流是没有读取文件的能力
https://www.jianshu.com/p/0f746f184a4f
StringBufferInputStream
已废弃
PipedInputStream
https://www.cnblogs.com/skywang12345/p/io_04.html
管道输入流。它的作用是让多线程可以通过管道进行线程间的通讯
FilterInputStream
https://www.cnblogs.com/xinhuaxuan/p/6054219.html
FilterInputStream、FilterOutputStream 过滤器字节输入流、输出流,这里用到了装饰器模式,它的主要用途在于给一个对象动态的添加功能。
ObjectInputStream
ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象。通过在流中使用文件可以实现对象的持久存储。如果流是网络套接字流,则可以在另一台主机上或另一个进程中重构对象。
只能将支持 java.io.Serializable 接口的对象写入流中
https://blog.csdn.net/chaoyu168/article/details/49766485
BufferedInputStream
BufferedInputStream 是缓冲输入流。它继承于FilterInputStream。
BufferedInputStream 的作用是为另一个输入流添加一些功能,例如,提供“缓冲功能”以及支持“mark()标记”和“reset()重置方法”。
BufferedInputStream 本质上是通过一个内部缓冲区数组实现的。例如,在新建某输入流对应的BufferedInputStream后,当我们通过read()读取输入流的数据时,BufferedInputStream会将该输入流的数据分批的填入到缓冲区中。每当缓冲区中的数据被读完之后,输入流会再次填充数据缓冲区;如此反复,直到我们读完输入流数据位置。
http://www.cnblogs.com/skywang12345/p/io_12.html
CheckedInputStream
CheckedInputStream和CheckedOutputStream
这是两个过滤流,用于维护数据校验和。校验和是用于维护数据完整性的一项技术。
CipherInputStream
CipherInputStream是由InputStream和一个Cipher组成,read()方法在读入时,对数据进行加解密操作
https://blog.csdn.net/zmken497300/article/details/51918109
DigestInputStream
MD5加密文件
InflaterInputStream
此类实现了一个流过滤器,用于以“deflate”压缩格式解压缩数据。它还用作其他解压缩过滤器的基础,例如GZIPInputStream。
LineNumberInputStream
跟踪输入流中的行号;可调用getLineNumber()和setLineNumber(int)
PushbackInputStream
PushbackInputStream
具有“能弹出一个字节的缓冲区”。因此可以将读到的最后一个字符回退
通常作为编译器的扫描器,之所以包含在内是因为Java编译器的需要,我们基本上用不到
DataInputStream
与DataOutputStream搭配使用,因此我们可以按照可移植方式从流读取基本数据类型(int,char,long等)
包含用于读取基本类型数据的全部接口
ProgressMonitorInputStream
监视读取某些 InputStream 的进度。大致用以下形式调用此 ProgressMonitor:
1 | InputStream in = new BufferedInputStream( |
这可以创建一个进度监视器,以监视读取输入流的进度。如果需要一段时间,将会弹出 ProgressDialog,以通知用户。如果用户单击 Cancel 按钮,则在进行下一次读取操作时会抛出 InterruptedIOException。当关闭流时,会执行所有的正确清除。
https://blog.csdn.net/zmken497300/article/details/51924434
PrintStream
https://www.jianshu.com/p/88e576067f53
打印流可以打印任意类型的数据。
DeflaterOutputStream
https://www.cnblogs.com/kabi/p/6169430.html
Reader
CharArrayReader
CharArrayReader 是字符数组输入流。它和ByteArrayInputStream类似,只不过ByteArrayInputStream是字节数组输入流,而CharArray是字符数组输入流。CharArrayReader 是用于读取字符数组,它继承于Reader。操作的数据是以字符为单位!
PipedReader
PipedWriter 是字符管道输出流,它继承于Writer。
PipedReader 是字符管道输入流,它继承于Writer。
PipedWriter和PipedReader的作用是可以通过管道进行线程间的通讯
http://www.cnblogs.com/skywang12345/p/io_20.html
FilterReader
字符过滤流(FilterReader/FilterWriter)与 字节过滤流(FilterInputStream / FilterOutputStream )的原理一致,都是通过操作要过滤的流本身的方法来实现。
不同就是字符过滤流是抽象类,而字节过滤流不是
StringReader
本篇将要讲述的是java io包中的StringReader和StringWriter。这两个类都是Reader和Writer的装饰类,使它们拥有了对String类型数据进行操作的能力。
https://blog.csdn.net/moonfish0607/article/details/78320363
BufferedReader
BufferedReader 是缓冲字符输入流。它继承于Reader。
BufferedReader 的作用是为其他字符输入流添加一些缓冲功能。
http://www.cnblogs.com/skywang12345/p/io_23.html
PushbackReader
这里将 PushbackInputStream 和 PushbackReader 放到一起讨论主要是二者的原理机制几乎一模一样,掌握其一即可。它们分别表示 字节推回流、字符推回流。
https://blog.csdn.net/u012420654/article/details/51549393
LineNumberReader
LineNumberReader可以支持从任意行读取的功能,并且提供了setLineNumber()的方法,但是这个按照并不能改变文件指针的位置,只是你调用getLineNumber()这个函数时,结果会变
http://www.cnblogs.com/jokerSun/p/4172833.html
FileReader
InputStreamReader
转换流-InputStreamReader、OutputStreamWriter
https://www.cnblogs.com/zhaoyanjun/p/6376996.html
PrintWriter
PrintWriter 是字符类型的打印输出流,它继承于Writer。
PrintStream 用于向文本输出流打印对象的格式化表示形式。它实现在 PrintStream 中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。