为什么我的文件写方法不起作用?
-
12-12-2019 - |
题
此方法应该写入随机的字符,但它根本没有写任何东西。我可能在这里做一些愚蠢的事情,但对于我的生活,我找不到它。
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();
}
}
. 不隶属于 StackOverflow