PrintWriter
действительно пишет только тогда, когда они закрыты (close
) или сброшены (flush
или, возможно, когда он думает, что этоtime; -)).
Попробуйте использовать try-with-resources всякий раз, когда это возможно, таким образом, вам не нужно думать о закрытии / очистке потока или модуля записи.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")
) {
Остальные могут остаться как есть ... или, если хотите: вы также можете поискать Files-API .Может быть, использование Files.lines
что-то для вас?