簡體   English   中英

寫入java中的臨時文件

[英]Writing to a temporary file in java

我想以追加模式寫入臨時文件。 我看到文件已創建,但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();
}
FileWriter fileWriter = new FileWriter(filename.getName(), true);

應該

FileWriter fileWriter = new FileWriter(filename, true);

這有效:

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())的用法。

而不是在臨時目錄中創建文件,在工作目錄中創建文件並使用objFile.deleteOnExit()它也可以像在temp目錄中創建文件一樣工作。

嘗試在關閉writer之前調用bw.flush() 雖然我認為作家應該在關閉之前自動調用flush ...

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

應該

FileWriter fileWriter = new FileWriter(filename, true);

你也可以用它

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

注意

`filename.getName();`

返回沒有絕對路徑的文件名。 因此可能存在這樣的情況:它正在Present工作目錄中創建一個文件並寫入其中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM