#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 запишет буферизованные выходные данные в файл.