Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中最好的文件I/O选项?_Java_File_File Io - Fatal编程技术网

java中最好的文件I/O选项?

java中最好的文件I/O选项?,java,file,file-io,Java,File,File Io,我是java新手,现在正在学习文件io。但我对io非常困惑,因为有很多对象需要处理(FileReader、FileWriter、BufferedReader、BufferedWriter、FileInputStream、FileOutputStream……可能还有更多) 我想知道什么是文件io最有效的过程(我应该使用什么?),我不需要任何编码。我只想处理文本文件。 任何简单的示例代码都将非常有用 谢谢。简单的经验法则 文本-读者/作者 二进制-输入流/输出流 您可以在理解和记住的第一个要点上阅读

我是java新手,现在正在学习文件io。但我对io非常困惑,因为有很多对象需要处理(FileReader、FileWriter、BufferedReader、BufferedWriter、FileInputStream、FileOutputStream……可能还有更多)

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

谢谢。

简单的经验法则

文本-读者/作者
二进制-输入流/输出流


您可以在理解和记住的第一个要点上阅读更多内容:

  • :字节的序列

  • 读写器:字符序列(字符串

不要混用它们,如果没有必要,不要将它们转换为另一个,并且始终指定编码

一些快速食谱:

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

相同的添加缓冲:

new BufferedInputStream(new FileInputStream(File f));
以字符序列的形式读取文件(文本读取)

添加面向行的缓冲(读取文本行)


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

读取

以下内容将允许您逐行阅读

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

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

DataOutputStream ds = new DataOutputStream(new FileOutputStream(newLocation));
至于你的问题,没有最好的选择。即使在这里,您也可以看到我们必须同时使用2个或更多个构造函数(看看构造函数,它们接受其他读写器或inputStream/outputStream)


最好的选择取决于您真正想要做什么

您可以尝试不同的选择…通常BufferedReader包装文件读取器是最好的考虑使用java中的新IO API..我看到了NIO,发现它有点耳熟能详(我的错!)(无法理解代码)不过有一个问题,
FileWriter/FileReader
是无用的,因为它们不允许您指定编码。但我听说FileReader、FileWriter使用默认编码或类似的编码,所以这有点棘手。如果我错了,请纠正我。实际上,第一个是文本文件,第二个是二进制文件,如果没有,请说明使用FileReader()?我看到一些人不喜欢它。(也不明白为什么?)@palatok:FileReader用于读取字符。如果同时使用,可能会很糟糕。但并非总是如此。可能有一些原因足以说明这一点。BufferedReader用于一次读取多个字符。它可以获得逐行读取的方法,这非常有帮助。它们还可以提高性能。这就是简单的解释ion.@Cratylus:是的,包括文本文件。这是一个非常有用的答案。还有一件事,什么是字符集?字符集的值是多少?它将与文件使用的字符编码相匹配。如果有疑问,
UTF-8
是一个流行的选择。@palatok:文件本身就是一个字节序列。要将其转换为文本,必须指定字符集编码,目前使用最多的是UTF-8和ISO-8859-1。也请阅读此强制性链接:
new BufferedReader(  ... someReader ... );  
BufferedReader br = new BufferedReader(new FileReader(fileLocationTxt));
DataOutputStream ds = new DataOutputStream(new FileOutputStream(newLocation));