Запись файла с помощью BufferedWriter в Java [дубликат]


На этот вопрос уже есть ответ здесь:

Я делаю лабораторию, где мы должны прочитать внешний файл, взять некоторую статистику по данным, а затем создать и записать новый файл со статистикой. Все в моей программе работает, кроме записи файла, которую я не могу сделать. поймите, почему мой метод не работает.
BufferedWriter writer;

public void writeStats(int word, int numSent, int shortest, int longest, int average)
{
    try
    {
        File file = new File("jefferson_stats.txt");
        file.createNewFile();

        writer = new BufferedWriter(new FileWriter(file));

        writer.write("Number of words: " + word );
        writer.newLine();
        writer.write("Number of sentences: " + numSent );
        writer.newLine();
        writer.write("Shortest sentence: " + shortest + " words");
        writer.newLine();
        writer.write("Longest sentence: " + longest + " words");
        writer.newLine();
        writer.write("Average sentence: " + average + " words");    
    }
    catch(FileNotFoundException e)
    {
        System.out.println("File Not Found");
        System.exit( 1 );
    }
    catch(IOException e)
    {
        System.out.println("something messed up");
        System.exit( 1 );
    }
}
3 5

3 ответа:

Вы должны смыть и закрыть ваш писатель:

writer.flush();
writer.close();

Вы всегда должны закрывать открытые ресурсы явно или неявно с Java 7 try-with-resources

    try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {
         ...            
    }

Кроме того, есть более удобный класс для записи текста-java. io. PrintWriter

try (PrintWriter pw = new PrintWriter(file)) {
    pw.println("Number of words: " + word);
    ...
}

Вы должны закрыть ваш BufferedWriter с помощью закрыть():

writer.close();