ファイルの書き込み方法が機能しないのはなぜですか?
-
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