import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileGenerator {
/**
* @param args
*/
public static void main(String[] args) {
File outputFile;
BufferedReader reader;
FileWriter fileWriter;
try {
outputFile = new File("test.txt");
outputFile.createNewFile();
fileWriter = new FileWriter(outputFile, false);
reader = new BufferedReader(new FileReader("template.txt"));
StringBuilder sb = new StringBuilder();
String line = reader.readLine();
while (line != null) {
sb.append(line);
sb.append(System.lineSeparator());
line = reader.readLine();
}
String everything = sb.toString();
fileWriter.write(everything);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
}
}
}
fileWriter创建test.txt但test.txt中的字符串为空。我希望它不会发生空洞。顺便说一下你可以说"串一切"可以是空的。但它不是。当我尝试没有读者txt我的意思是"字符串一切="一些文字",它发生相同。它是空的
答案 0 :(得分:1)
该文件为空,因为everything
的内容小于操作系统和/或Java的I / O缓冲区,并且程序在没有正确关闭文件的情况下结束。
当您向文件写入内容时,如果您需要确保在不关闭文件的情况下编写文件,请致电flush()
。
每当您打开I / O资源时,请在使用后使用close()
将其关闭。 close()
意味着刷新缓冲区。
Java 7为此提供了 try-with-resources ,如下所示:
try (FileWriter writer = new FileWriter("foo.txt")) {
writer.write("Hello, world!\n");
writer.flush();
// do more stuff with writer
} // <- closes writer implicitly as part of the try-with-resources feature
答案 1 :(得分:0)
根据评论中的建议,您需要执行fileWriter.close()
才能关闭输出流。如果它是一个缓冲的编写器,那么就不必按照此处的说明关闭它。
Is it necessary to close a FileWriter, provided it is written through a BufferedWriter?