PrintWriter не печатает текст в файл

У меня есть задание скопировать текст одного файла в другой. С помощью следующего кода я могу вывести строки файла на консоль, но печать в выходной файл не работает.

      try {
        System.out.print("Enter the file name with extension : ");

        Scanner input = new Scanner(System.in);

        File inputFile = new File(input.nextLine());
        PrintWriter out = new PrintWriter("/Users/jonathanzier/Dropbox/IdeaProjects/CSE_205_Homework1/src/com/company/output.txt");


        input = new Scanner(inputFile);


        while (input.hasNextLine()) {
            out.println(input.nextLine());
           //System.out.println(input.nextLine());  - This will print 
           //correctly to the console
        }
        out.close();


    } catch (FileNotFoundException e) {
        System.out.println("File Not Found");
    }

Отображается ошибка "Файл не найден"

iamsankalp89 11.10.2018 06:39

Попробуйте добавить out.flush (); после out.println (input.nextLine ());

pavithraCS 11.10.2018 06:39

@ iamsankalp89 это ваша система. если файл не найден, он должен его увидеть.

Amin 11.10.2018 06:40

@pavithraCS - Да, это сработало, почему? Спасибо

Jonathan Zier 11.10.2018 06:41

Я поменял путь дорогой

iamsankalp89 11.10.2018 06:41

@ iamsankalp89 Я не получал ошибку "файл не найден".

Jonathan Zier 11.10.2018 06:42

Нет проблем, я еще раз проверю

iamsankalp89 11.10.2018 06:42

для получения дополнительной информации см. этот stackoverflow.com/questions/29991851/…

pavithraCS 11.10.2018 06:43

Теперь, когда я добавил out.flush () в цикл, он работает правильно. Спасибо!

Jonathan Zier 11.10.2018 06:43

@pavithraCS out.close() будет сброшен, но почему он не работает, если вы явно не упоминаете об этом?

Amin 11.10.2018 06:45

Рассмотрите возможность использования предложения try-with-resource или закрытия PrintWriter в предложении finally. В соответствии с текущим форматированием вашего оператора try-catch, если вы столкнетесь с исключением FileNotFoundException, предложение будет прервано и никогда не закроет PrintWriter.

faris 11.10.2018 07:22
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
11
594
1

Ответы 1

Писатель печати использует Буферизованный писатель. Он не будет записывать на диск сразу. Когда вы вызываете методы println, printf или format, они будут записывать на диск, если включена автоматическая очистка. В противном случае вам придется вызвать метод flush для записи на диск. Обычно вызов метода close должен записывать все, что находится в буфере, в файл без необходимости использования метода flush.

https://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html

Другие вопросы по теме