[英]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.