写入文件 - 哪种方式更清洁?

时间:2016-01-16 19:11:08

标签: java

我正在使用java.io.PrintWriter将一些文字写入文本文件。 我想知道是否更好地构建一个变量,我需要写的只需要一次

PrintWriter out = new PrintWriter(outputfile);
out.printf("%s", myvariablewithalltext);

或者如果我可以调用nPrintWriter来编写for循环中的文本块。

它以任何一种方式工作,没有更多的代码,我只是想知道哪个更好。

4 个答案:

答案 0 :(得分:2)

在大多数情况下,最好在流中编写。主要原因是您的变量可能占用太多内存,但流会自动刷新它的内容。将文本写入变量本质上是手动缓冲。更好的方法是使用适当的缓冲流/写入器。在您的情况下,您可以使用java.io.BufferedWriter。像这样

BufferedWriter out = new BufferedWriter(new PrintWriter("file.txt"));

或者,如果你更喜欢PrintWriter界面,你可以这样做

PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("file.txt")));

答案 1 :(得分:1)

假设您愿意接受其他建议(不仅仅是您提到的两个建议)。

如果您想要的只是一种将文本写入文件的简洁方式,当然这有多种解决方案,这里有几种方法:

  1. 使用PrintWriter

    示例:

    String contentToWrite = "This is some random Text";
    PrintWriter writerToFile = new PrintWriter("TheOutputFile.txt");
    writerToFile.print(contentToWrite);
    writerToFile.close();
    
  2. 使用FileOutputStream

    示例:

    String contentToWrite = "This is some random Text"; FileOutputSream fileOPS = new FileOutputStream("TheOutputFile.txt"); fileOPS.write(contentToWrite.getBytes()); fileOPS.close();

  3. 使用Files

  4. 使用FileWriterBufferWriter
  5. 通过 apache.commons.io
  6. 使用FileUtils
  7. 使用 guava的<{3}}
  8. 这里的一些方法只是获取内容(不需要解析或转换,即字符串格式)并将其写入文件。 [无解析/转换 - &gt;更少的代码 - &gt;清洁代码]。 ;)

    有些不要求您对对象进行嵌套。 [较少的对象 - &gt;更少的代码 - &gt;清洁代码]。 ;)

    当然使用取决于您的实施。但我希望这能帮助您做出最适合您需求的决定。

    注意:我提到的每个类名都是其参考文档的链接。

答案 2 :(得分:0)

是后者。没有任何理由将整个内容放入变量中,只需将其写入文件即可。 如果除了写入文件之外你对该变量有一些额外的用途,那可能会改变一些东西,但即便如此,也许有更好的方法。

答案 3 :(得分:-1)

我认为这取决于你的内容长度。 如果您只有一些文字,那么最好将所有内容保存在内存中并一次性写入。 但是如果你的内容非常大或某些部分需要很长时间来计算,那么你可能应该逐个编写以避免将大量数据保存在内存中。
相关问题