Question

Cette méthode devrait écrire des caractères aléatoires, mais elle n'écrit rien du tout.Je fais probablement quelque chose de stupidement mal ici, mais pour ma vie, je ne parviens pas à le trouver.

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());
    }
}
Était-ce utile?

La solution

Comme pour n’importe quel flux (et cela s’applique à la plupart des langues), vous devez le fermer lorsque vous avez terminé.

Les flux sont optimisés pour être rapides et, par conséquent, toutes les données que vous y écrivez n'apparaissent pas instantanément dans le fichier.Lorsque vous close() ou flush() un flux, les données sont écrites dans le fichier (ou tout autre mécanisme de stockage que vous utilisez).

Dans votre cas, essayez plutôt ce qui suit.

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();
    }
}

Autres conseils

Vous devez avoir flush () et / ou fermer () le fichier à un moment donné.

n'ai pas fermé l'écrivain l'essayer enfin.

finally  {
  writer.close();
}

Vous devez toujours fermer votre ruisseau.Essayez ce motif avec des écrivains:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top