CopyBytes
看起来像一个普通的程序,但它实际上代表了一种你应该避免的低级 I/O。bytestream
已经提到,尽管所有内容都建立在自身之上,但应该首选字符、对象等的流。这背后的原因是什么,与安全管理器和性能相关问题有什么关系?
来源:甲骨文文档
Oracle 实际上在说的是“请不要重新实现轮子!”。
您几乎不需要常规的字节流:
在极少数情况下,您实际上需要使用字节流。
从您引用的文字中:
CopyBytes 看起来像一个普通程序,但它实际上代表了一种您应该避免的低级 I/O。由于 xanadu.txt 包含字符数据,因此最好的方法是使用字符流,如下一节所述。还有更复杂的数据类型的流。字节流应该只用于最原始的 I/O。
通常,您不想直接使用字节。有更高级别的 API,例如读取文本(即必须从字节解码的字符数据)。
它可以工作,但效率很低:它复制的每个字节都需要 2 次方法调用。
相反,您应该使用缓冲区(几千字节,最佳大小取决于您读取的内容和其他条件)并在每次方法调用时读取/写入整个缓冲区(或尽可能多)。