Java几个常用的io类

字节流 InputStream/OutputStream

ByteArray

数据被写入一个byte数组, 缓冲区会随着数据的不断写入而自动增长

Piped

多线程可以通过管道进行线程间的通讯

我们在线程A中向PipedOutputStream中写入数据,这些数据会自动的发送到与PipedOutputStream对应的PipedInputStream中,进而存储在PipedInputStream的缓冲中;此时,线程B通过读取PipedInputStream中的数据

使用时需要注意设置合适的缓冲区大小, 不会自动增长

Object

对基本数据和实现了 java.io.Serializable 接口的对象进行序列化操作支持

序列化不会自动保存static和transient变量”,因此我们若要保存它们,则需要通过writeObject()和readObject()去手动读写

File

读写文件

Buffered

继承自FileterStream,提供内部缓冲区数组

内部使用volatile和AtomicReferenceFieldUpdater保证字段更新的原子性

Data

许应用程序以与机器无关方式从底层输入流中读写基本 Java 数据类型

PrintStream

允许格式化打印流

System.out is instance of PrintStream

RandomAccessFile

支持对文件随机访问的读取和写入


参考文章

java io系列01之 “目录”