PrintWriter не пишет в файл seatChart.txt

Мне нужно сделать программу билетов в кино. Я написал большую часть урока. Последнее, что нужно сделать, это создать текстовый файл с PrintWriter, отправив информацию в текстовый файл.

Я еще не начал вторую часть. Сейчас я просто пытаюсь распечатать первые две строчки схемы рассадки. Это не требует информации от класса.

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

public void createSeatingChart() throws FileNotFoundException 
{
    File seatingChart = new File("C:/Users/Chris/Documents/NetBeansProjects/Auditorium/seatingChart.txt");
    PrintWriter pw = new PrintWriter(seatingChart);

    pw.println("\t\tSeats");
    pw.println("\t123456789012345678901234567890");

    pw.close();
}

Я почти уверен, что это что-то маленькое, чего мне не хватает, но я не уверен, что это такое. Любые идеи?


person Christopher Collar    schedule 29.03.2017    source источник
comment
Как понять, что что-то не так? В вашем вопросе отсутствует важная контекстная информация: какие ошибки вы видите? какие проступки? Как ты это называешь? Правильно ли вы обрабатываете исключения?   -  person Hovercraft Full Of Eels    schedule 29.03.2017
comment
вообще никаких ошибок, только исключения, которые я получал, это файл не найден, который я бросил   -  person Christopher Collar    schedule 29.03.2017
comment
Отладка 101: Либо поставьте точку останова, либо вызов System.out.println в начале этой функции и убедитесь, что она вызывается. Затем выполните один шаг (или добавьте больше printlns), чтобы увидеть, что на самом деле происходит. Первой темой, которую должен охватывать любой курс, является отладка.   -  person paxdiablo    schedule 29.03.2017
comment
Серьезно, используйте знаки препинания. Вы обнаружите, что иногда помогает ясность ваших собственных мыслей.   -  person Mad Physicist    schedule 31.03.2017


Ответы (1)


Вот простое решение, которое сработало для меня без каких-либо ошибок.

Как указано в JavaDoc для класса PrintWriter:

FileNotFoundException — если данный файловый объект не обозначает существующий обычный файл, доступный для записи, и новый обычный файл с таким именем не может быть создан, или если при открытии или создании файла возникает какая-либо другая ошибка.

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

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

Примечание. Второй оператор if является optionnelle. Вы можете удалить его, поскольку PrintWriter создаст файл, если он не существует (просто для демонстрации).

public void createSeatingChart() throws IOException 
    {

        File seatingChart = new File("C:/Users/Chris/Documents/NetBeansProjects/Auditorium/seatingChart.txt");

        // Check The parent Directory is Exist or Create it.
        if (!seatingChart.getParentFile().exists()) seatingChart.getParentFile().mkdirs();

        // create a new file if not exist 
        if (!seatingChart.exists()) seatingChart.createNewFile();


        PrintWriter pw = new PrintWriter(seatingChart);

        pw.println("\t\tSeats");
        pw.println("\t123456789012345678901234567890");

        pw.close();


    }
person Y. Afnisse    schedule 29.03.2017
comment
Вызов сброса полностью излишен. Просто проверьте Writer API, который принадлежит PrintWriter. parent, чтобы увидеть, что close всегда вызывает flush. - person Hovercraft Full Of Eels; 29.03.2017
comment
См. этот вопрос и ответы на него, чтобы узнать больше об этом. - person Hovercraft Full Of Eels; 29.03.2017
comment
извините всех, я исправил ошибки, которые я не был уверен в очистке при закрытии. - person Y. Afnisse; 29.03.2017
comment
Хорошо, но как это отвечает на вопрос ОП? Как это говорит ему, что его код не работает? - person Hovercraft Full Of Eels; 29.03.2017
comment
Я думаю, что теперь ответ достаточно ясен, чтобы понять, откуда приходит Exception и как его исправить. - person Y. Afnisse; 29.03.2017