質問

この方法はランダムな文字を書くべきですが、それはまったく何も書きません。私はおそらくここで愚かに悪い何かをしていますが、私の人生のために私はそれを見つけることができません。

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帰属
所属していません StackOverflow
scroll top