10

我想以追加模式写入临时文件。我看到文件已创建,但未将来自 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();
}
4

5 回答 5

6
FileWriter fileWriter = new FileWriter(filename.getName(), true);

应该

FileWriter fileWriter = new FileWriter(filename, true);
于 2012-11-06T12:28:57.630 回答
5

这有效:

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())

于 2012-11-06T12:41:49.673 回答
1

不要在临时目录中创建文件,而是在工作目录中创建文件并使用objFile.deleteOnExit()。它也与在临时目录中创建文件相同。

于 2012-11-06T12:33:26.790 回答
0

bw.flush()在关闭作家之前尝试打电话。虽然我认为作家应该在关闭之前自动调用flush ...

于 2012-11-06T12:26:25.180 回答
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();`

返回没有绝对路径的文件名。因此,它可能会在当前工作目录中创建一个文件并将其写入其中。

于 2012-11-06T12:26:32.277 回答