包装 InputOutput 流
OutputStream
和 InputStream
有许多不同的类,每个类都具有独特的功能。通过将流包裹在另一个流中,你可以获得两个流的功能。
你可以多次包装流,只需记下订购。
有用的组合
使用缓冲区时将字符写入文件
File myFile = new File("targetFile.txt");
PrintWriter writer = new PrintWriter(new BufferedOutputStream(new FileOutputStream(myFile)));
在使用缓冲区写入文件之前压缩和加密数据
Cipher cipher = ... // Initialize cipher
File myFile = new File("targetFile.enc");
BufferedOutputStream outputStream = new BufferedOutputStream(new DeflaterOutputStream(new CipherOutputStream(new FileOutputStream(myFile), cipher)));
输入/输出流包装器列表
包装纸 | 描述 |
---|---|
BufferedOutputStream / BufferedInputStream |
虽然 OutputStream 一次写入一个字节的数据,但 BufferedOutputStream 以数据块的形式写入数据。这减少了系统调用的数量,从而提高了性能。 |
DeflaterOutputStream / DeflaterInputStream |
执行数据压缩。 |
InflaterOutputStream / InflaterInputStream |
执行数据解压缩。 |
CipherOutputStream / CipherInputStream |
加密/解密数据。 |
DigestOutputStream / DigestInputStream |
生成消息摘要以验证数据完整性。 |
CheckedOutputStream / CheckedInputStream |
生成 CheckSum。CheckSum 是 Message Digest 的一个更简单的版本。 |
DataOutputStream / DataInputStream |
允许写入原始数据类型和字符串。意思是写字节。平台独立。 |
PrintStream |
允许写入原始数据类型和字符串。意思是写字节。平台依赖。 |
OutputStreamWriter |
将 OutputStream 转换为 Writer。OutputStream 处理字节,而 Writers 处理字符 |
PrintWriter |
自动调用 OutputStreamWriter。允许写入原始数据类型和字符串。严格来说,写字符和写字符最好 |