我正在使用java.io.PrintWriter
将一些文字写入文本文件。
我想知道是否更好地构建一个变量,我需要写的只需要一次
PrintWriter out = new PrintWriter(outputfile);
out.printf("%s", myvariablewithalltext);
或者如果我可以调用n
次PrintWriter
来编写for
循环中的文本块。
它以任何一种方式工作,没有更多的代码,我只是想知道哪个更好。
答案 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)
假设您愿意接受其他建议(不仅仅是您提到的两个建议)。
如果您想要的只是一种将文本写入文件的简洁方式,当然这有多种解决方案,这里有几种方法:
使用PrintWriter
。
示例:
String contentToWrite = "This is some random Text";
PrintWriter writerToFile = new PrintWriter("TheOutputFile.txt");
writerToFile.print(contentToWrite);
writerToFile.close();
示例:
String contentToWrite = "This is some random Text";
FileOutputSream fileOPS = new FileOutputStream("TheOutputFile.txt");
fileOPS.write(contentToWrite.getBytes());
fileOPS.close();
使用Files
FileWriter
和BufferWriter
FileUtils
这里的一些方法只是获取内容(不需要解析或转换,即字符串格式)并将其写入文件。 [无解析/转换 - >更少的代码 - >清洁代码]。 ;)
有些不要求您对对象进行嵌套。 [较少的对象 - >更少的代码 - >清洁代码]。 ;)
当然使用取决于您的实施。但我希望这能帮助您做出最适合您需求的决定。
注意:我提到的每个类名都是其参考文档的链接。
答案 2 :(得分:0)
是后者。没有任何理由将整个内容放入变量中,只需将其写入文件即可。 如果除了写入文件之外你对该变量有一些额外的用途,那可能会改变一些东西,但即便如此,也许有更好的方法。
答案 3 :(得分:-1)