import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class backup {
public static void main(String[] args) {
System.out.println("\nThe names in the file are:\n");
readFromFile();
}
public static void readFromFile() {
try {
Scanner file = new Scanner(new File("Names.txt"));
PrintWriter pass = new PrintWriter("pass.txt");
PrintWriter fail = new PrintWriter("fail.txt");
Scanner input = new Scanner(System.in);
while (file.hasNext()) {
String name = file.nextLine();
System.out.printf("Please enter " + name + "'s mark:");
int mark = input.nextInt();
Scanner kybd = new Scanner(System.in);
{
if (mark >= 40) {
// System.out.println(name + " has passed");
pass.println(name);
} else {
// System.out.println(name + " has failed");
fail.println(name);
}
}
} // end while
} // end try
catch (IOException ioe) {
System.out.println("Error handling file");
} // end catch
}// readFromFile
}
Невозможно записать в файл прохода и сбой. Файл имен представляет собой просто список имен, если пользователь набирает более 40 баллов, они входят в проход, однако я не могу получить файл txt для заполнения вывода.
Когда я вставляю свой печатный компьютер в while, это только последняя запись, которая добавляется в текстовый файл с проверкой или отказом.




Вы должны вызвать функцию close в вашем файле, чтобы он был записан на диск.
В противном случае ваши модификации остаются только в памяти
Что-то вроде: file.close()
PrintWriter действительно пишет, только когда они закрыты (close) или сброшены (flush или, может быть, когда думает, что пора ;-)).
По возможности старайтесь использовать попробовать с ресурсами, чтобы не думать о закрытии / очистке потока или записи. try-with-resources заботится о том, чтобы реализации AutoClosable автоматически закрывались в конце блока try.
Ваш образец переписан с помощью try-with-resources (показывает только начальную часть):
try(
Scanner file = new Scanner(new File("Names.txt"));
PrintWriter pass = new PrintWriter("pass.txt");
PrintWriter fail = new PrintWriter("fail.txt")
) {
Остальное можно оставить как есть ... или, если хотите: вы также можете найти Файлы-API. Может быть, использование Files.lines - это что-то для вас?
Если вы используете PrintWriter, вам нужно записать close в конце потока. В противном случае это будет только в памяти. Попробуй это:
try {
Scanner file = new Scanner(new File("Names.txt"));
PrintWriter pass = new PrintWriter("pass.txt");
PrintWriter fail = new PrintWriter("fail.txt");
Scanner input = new Scanner(System.in);
while (file.hasNext()) {
String name = file.nextLine();
System.out.printf("Please enter " + name + "'s mark:");
int mark = input.nextInt();
//Scanner kybd = new Scanner(System.in);
//{
if (mark >= 40) {
// System.out.println(name + " has passed");
pass.println(name);
} else {
// System.out.println(name + " has failed");
fail.println(name);
}
//}
} // end while
pass.close();
fail.close();
} // end try
catch (IOException ioe) {
System.out.println("Error handling file");
}
Вам нужно убедиться, что вы добавили блок finally в конце и вызывали метод close для всего, что закрывается, в данном случае - на печатной машине. В таком случае pass.close () и fail.close ().