4

我是 java 新手,现在正在学习 File io 。但我对 io 感到非常困惑,因为有很多对象要处理它(FileReader、FileWriter、BufferedReader、BufferedWriter、FileInputStream、FileOutputStream ......而且可能还有更多)。

我想知道 File io 最有效的过程是什么(我应该使用什么?)。我不想要任何编码。我只想处理文本文件。任何简单的示例代码都会非常有帮助。

谢谢你。

4

3 回答 3

8

首先要理解和记住的重点:

  • 字节序列。

  • 读取器/写入器:字符序列(字符串

不要混合它们,如果没有必要,不要将它们翻译成另一种,并始终指定编码。

一些快速食谱:

字节序列的形式读取文件(二进制读取)。

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 ... );  

输出/写入实际上是相同的(输出/写入器)

于 2012-12-19T19:43:10.520 回答
5

简单的规则拇指。

文本 - Readers / Writers
Binary - InputStream / OutputStream

您可以在文件中阅读更多内容

于 2012-12-19T19:34:14.840 回答
0

阅读

以下将允许您逐行阅读

BufferedReader br = new BufferedReader(new FileReader(fileLocationTxt));

写作

以下将允许您逐行/逐部分编写

DataOutputStream ds = new DataOutputStream(new FileOutputStream(newLocation));

至于你的问题,没有最好的选择。即使在这里,您也可以看到我们必须一次使用 2 个或更多(查看构造函数。它们接受其他读取器/写入器或 inputStream/outputStream。

最好的选择取决于你真正想做的事情

于 2012-12-19T19:45:37.360 回答