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()ライターを閉じる前に呼び出してみてください。ライターは閉じる前に自動的にフラッシュを呼び出すべきだと思いますが...

于 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 に答える