我想以附加模式写入临时文件。我看到文件已创建,但Stringbuffer中的数据未写入。有人可以告诉我为什么吗?请在下面找到我写的代码,
public static void writeToFile(String pFilename, StringBuffer sb)
throws IOException {
String property = "java.io.tmpdir";
String tempDir = System.getProperty(property);
File dir = new File(tempDir);
File filename = File.createTempFile(pFilename, ".tmp", dir);
FileWriter fileWriter = new FileWriter(filename.getName(), true);
System.out.println(filename.getName());
BufferedWriter bw = new BufferedWriter(fileWriter);
bw.write(sb.toString());
bw.close();
}
答案 0 :(得分:6)
FileWriter fileWriter = new FileWriter(filename.getName(), true);
应该是
FileWriter fileWriter = new FileWriter(filename, true);
答案 1 :(得分:4)
这有效:
public static void writeToFile(String pFilename, StringBuffer sb) throws IOException {
File tempDir = new File(System.getProperty("java.io.tmpdir"));
File tempFile = File.createTempFile(pFilename, ".tmp", tempDir);
FileWriter fileWriter = new FileWriter(tempFile, true);
System.out.println(tempFile.getAbsolutePath());
BufferedWriter bw = new BufferedWriter(fileWriter);
bw.write(sb.toString());
bw.close();
}
请注意FileWriter(File, boolean)
和System.out.println(tempFile.getAbsolutePath())
的使用情况。
答案 2 :(得分:1)
不是在临时目录中创建文件,而是在工作目录中创建文件并使用objFile.deleteOnExit()
。它也可以像在temp目录中创建文件一样工作。
答案 3 :(得分:0)
尝试在关闭作者之前调用bw.flush()
。虽然我认为作家应该在关闭之前自动调用flush ...
答案 4 :(得分:0)
FileWriter fileWriter = new FileWriter(filename.getName(), true);
应该是
FileWriter fileWriter = new FileWriter(filename, true);
您也可以使用此
FileWriter fileWriter = new FileWriter(filename.getAbsolutePath+filename.getName(), true);
请注意
`filename.getName();`
返回没有绝对路径的文件名。因此可能存在这样的情况:它正在当前工作目录中创建一个文件并写入其中。