PrintWriter не удается выполнить печать в файл

#java #fileoutputstream #printwriter

Вопрос:

Файл успешно создается, но я не могу заставить PrintWriter распечатать что-либо в текстовый файл. Код:

 import java.io.File;
import java.util.Scanner;
import java.io.IOException;
import java.io.PrintWriter;

public class exams {
    public static void main (String[] args) throws IOException{
        Scanner scanner = new Scanner(System.in);
        System.out.println("How many scores were there?");
        int numScores = scanner.nextInt();
        int arr[] = new int[numScores];

        for (int x=0; x<numScores; x  ){
            System.out.println("Enter score #"   (x 1));
            arr[x] = scanner.nextInt();
        }

        File file = new File("ExamScores.txt");
        if(!file.exists()){
           file.createNewFile();
           PrintWriter out = new PrintWriter(file);
            for (int y=0; y<arr.length; y  ){
                out.println(arr[y]);
            }
        }
        else {
            System.out.println("The file ExamScores.txt already exists.");
        }   
    }
}
 

Ответ №1:

Вам необходимо очистить и / или закрыть файл, чтобы данные были записаны на диск.

Добавьте out.close() в свой код:

 PrintWriter out = new PrintWriter(file);
for (int y=0; y<arr.length; y  ){
    out.println(arr[y]);
}
out.close()
 

Комментарии:

1. Спасибо! Я знал, что это было что-то маленькое.

Ответ №2:

Вам нужно закрыть программу PrintWriter до выхода программы, которая приводит к сбросу потока печати, чтобы все было записано в файл. Попробуйте это:

 PrintWriter out = null;
try {
    //...
    out = new PrintWriter(file);
    //...
} finally {
    if (out != null) {
        out.close();
    }
}
 

Комментарии:

1. Синтаксис try-with-resources (Java 7 и далее) проще и надежнее.

Ответ №3:

вам нужно очистить и закрыть файл после завершения записи http://download.oracle.com/javase/1.4.2/docs/api/java/io/PrintWriter.html функция void close() Закрывает поток. void flush() Очистите поток.

Ответ №4:

класс printwriter работает с потоками, а не с файлами, поэтому вы не можете писать в этот файл. вам нужно создать файл с помощью FileOutputStream, после этого вы сможете использовать printwriter для записи в этот файл. Попробуйте это:

Проверка потока вывода файла = новый поток вывода файла(«ExamScores.txt»); PrintWriter out = новый печатник(экзамен, верно);

Комментарии:

1. Это откровенная дезинформация. PrintWriter РАБОТАЕТ с файлами. Обратитесь к ответу Пейтона выше. Операция пропустила оператор out.close() после записи для очистки буфера. Как только будет вызвана функция out.close (), PrintWriter запишет буферизованные выходные данные в файл.