将对流的引用“进一步向下”过滤器链,并再次使用这些较低级别的流,或者甚至将一种类型的流交换为另一种流,这是不好的样式吗?例如:
OutputStream os = new FileOutputStream("file");
PrintWriter pw = new PrintWriter(os);
pw.print("print writer stream");
pw.flush();
pw = null;
DataOutputStream dos = new DataOutputStream(os);
dos.writeBytes("dos writer stream");
dos.flush();
dos = null;
os.close();
Run Code Online (Sandbox Code Playgroud)
如果是这样,如果我需要使用两个流的功能,例如,如果我想向流中写入几行文本,然后是二进制数据,反之亦然,那有什么选择呢?
在某些情况下可以这样做,但很容易出错。您需要小心缓冲区和诸如ObjectOutputStream.
如果我想将几行文本写入流,然后写入二进制数据,反之亦然?
为此,您需要知道的是,您可以将文本转换为二进制数据并返回,但始终需要指定编码。然而,它也容易出错,因为人们倾向于使用使用平台默认编码的 API 方法,当然,您基本上是在为自定义二进制文件格式实现解析器 - 很多事情都可能会出错。
总而言之,如果您要创建文件格式,特别是在混合文本和二进制数据时,最好使用现有框架,例如Google protocol buffers
| 归档时间: |
|
| 查看次数: |
1307 次 |
| 最近记录: |