簡體   English   中英

為什么我的文件寫入方法不起作用?

[英]Why isn't my file write method working?

這個方法應該寫隨機字符,但是它根本不寫任何東西。 我可能在這里做錯了一些愚蠢的事情,但是對於我一生來說,我找不到它。

public void writeRandomChunk(String fileName) {
    try {
        File saveFile = new File(folderName + '/' + fileName);

        PrintWriter writer = new PrintWriter(
                             new BufferedWriter(
                             new FileWriter(saveFile)));

        Random r = new Random(System.currentTimeMillis());

        for (int i = 0; i < chunkSize; i++) {
            for (int j = 0; j < chunkSize; j++) {
                writer.print((char)(r.nextInt(26) + 'a'));
            }
            writer.println();
        }

    } catch (Exception e) {
        System.out.println("Error in WorldFile writeRandomFile:\n"
                           + e.getLocalizedMessage());
    }
}

與任何流一樣(這適用於大多數任何語言),完成后需要將其關閉。

對流進行了優化以使其速度更快,因此,並非您寫入它們的所有數據都會立即顯示在文件中。 當您close()flush()流時,數據將被寫入文件(或您正在使用的任何其他存儲機制)。

根據您的情況,請嘗試以下操作。

public void writeRandomChunk(String fileName) {
    PrintWriter writer = null;
    try {
        File saveFile = new File(folderName + '/' + fileName);
        writer = new PrintWriter(
                             new BufferedWriter(
                             new FileWriter(saveFile)));

        Random r = new Random(System.currentTimeMillis());

        for (int i = 0; i < chunkSize; i++) {
            for (int j = 0; j < chunkSize; j++) {
                writer.print((char)(r.nextInt(26) + 'a'));
            }
            writer.println();
        }

    } catch (Exception e) {
        System.out.println("Error in WorldFile writeRandomFile:\n"
                           + e.getLocalizedMessage());
    } finally {
        if (writer != null)
            writer.close();
    }
}

您需要在某個時候沖洗文件和/或關閉文件。

尚未結束,作家終於嘗試了。

finally  {
  writer.close();
}

您應該始終關閉視頻流。 與作家一起嘗試這種模式:

PrinterWriter writer = null;
try {
    writer = new PrinterWriter(...);
    // do your write loop here.
} catch (Exception e) {
    // recover from exception.
} finally {
    if (writer != null) {
        writer.close();
    }
}

暫無
暫無

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

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