CheckedOutputStream
一个输出流,它还维护正在写入的数据的校验和。 然后可以使用校验和来验证输出数据的完整性。
定义:
public class CheckedOutputStream extends FilterOutputStream
同样只有一个构造函数
构造器 | 描述信息 |
CheckedOutputStream(OutputStream out, Checksum cksum) | 创建具有指定校验和的输出流。 |
方法有一个父类没有的方法 getChecksum() 意思是:返回此输出流的校验和。
演示代码:
try (FileOutputStream fos = new FileOutputStream("file.txt"); CheckedOutputStream check = new CheckedOutputStream(fos, new CRC32());) { String content = "这个是 CheckedOutputStream 写入的内容"; byte[] array = content.getBytes(); for (byte b : array) { check.write(b); } long ckSum = check.getChecksum().getValue(); System.out.println("Checksum: 0x" + Long.toHexString(ckSum).toUpperCase());} catch (IOException ex) { System.out.println(ex.getMessage());}
完整代码和运行效果:
使用工具校验一下 CRC32 的校验码是否一致。
CipherOutputStream 不在演示,在加密和解密知识点在来详细说这个。
DataOutputStream
数据输出流允许应用程序以可移植的方式将原始 Java 数据类型写入输出流。 然后,应用程序可以使用数据输入流来读回数据。 多个并发线程使用 DataOutputStream 是不安全的。 如果一个 DataOutputStream 被多个线程使用,那么对数据输出流的访问应该由适当的同步控制。
定义:
public class DataOutputStream extends FilterOutputStream implements DataOutput
代码演示效果:
try (FileOutputStream fileOutputStream = new FileOutputStream("file.txt"); DataOutputStream dataOutputStream = new DataOutputStream(fileOutputStream)) { String content = "这个是 DataOutputStream 的演示"; byte[] array = content.getBytes(); for (byte b : array) { dataOutputStream.write(b); }} catch (IOException ex) { System.out.println(ex.getMessage());}
对于 DeflaterOutputStream 和 InflaterOutputStream 是压缩和解压的输出流。这里先不做演示。
PrintStream
PrintStream 向另一个输出流添加了功能,即能够方便地打印各种数据值的表示形式。
还提供了另外两个功能。与其他输出流不同,PrintStream 从不抛出 IOException;相反,异常情况只是设置一个内部标志,可以通过 checkError 方法进行测试。
也可以可选的创建一个 PrintStream 以便自动刷新;这意味着在写入字节数组、调用 println 方法之一或写入换行符或字节 ('\n') 后,会自动调用底层输出流的 flush 方法。
PrintStream 打印的所有字符都使用给定的编码或字符集转换为字节,如果未指定,则使用平台的默认字符编码。 PrintWriter 类应该用于需要写入字符而不是字节的情况。 这个类总是用字符集的默认替换字符串替换格式错误和不可映射的字符序列。
当需要对编码过程进行更多控制时,应使用 CharsetEncoder 类。
演示代码:
这里来看我们经常用到的一个使用方法。
System.out.println("输出一串字符串。");
该类是 System
java.lang.Systempublic final class System
里面有个静态的常量方法 out 返回值是: PrintStream。 然后就可以理解为什么可以打印字符串了。
所以 System.out.println(""); 基本等同于 new PrintStream("file.txt").println(""); 区别是一个输出到了控制台, 一个输出到了文件中。 这也是以后在 web 开发中使用 System.out 打印信息的时候, 其实也会写到日志文件中一样。
OutputStream 相关的知识点就先说到这了。 应该把相关的案例使用都介绍到了。
本文地址:百科问答频道 https://www.neebe.cn/wenda/927371_3.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!