我是 java 新手,现在正在学习 File io 。但我对 io 感到非常困惑,因为有很多对象要处理它(FileReader、FileWriter、BufferedReader、BufferedWriter、FileInputStream、FileOutputStream ......而且可能还有更多)。
我想知道 File io 最有效的过程是什么(我应该使用什么?)。我不想要任何编码。我只想处理文本文件。任何简单的示例代码都会非常有帮助。
谢谢你。
首先要理解和记住的重点:
流:字节序列。
读取器/写入器:字符序列(字符串)
不要混合它们,如果没有必要,不要将它们翻译成另一种,并始终指定编码。
一些快速食谱:
以字节序列的形式读取文件(二进制读取)。
new FileInputStream(File f);
相同的添加缓冲:
new BufferedInputStream(new FileInputStream(File f));
将文件作为字符序列读取(文本读取)。
new FileReader(File f); // ugly, dangerous, does not let us specify the encoding
new InputStreamReader(new FileInputStream(File f),Charset charset); // good, though verbose
添加面向行的缓冲(读取文本行)
new BufferedReader( ... someReader ... );
输出/写入实际上是相同的(输出/写入器)
阅读
以下将允许您逐行阅读
BufferedReader br = new BufferedReader(new FileReader(fileLocationTxt));
写作
以下将允许您逐行/逐部分编写
DataOutputStream ds = new DataOutputStream(new FileOutputStream(newLocation));
至于你的问题,没有最好的选择。即使在这里,您也可以看到我们必须一次使用 2 个或更多(查看构造函数。它们接受其他读取器/写入器或 inputStream/outputStream。
最好的选择取决于你真正想做的事情