PrintWriter создает файл, но не записывает

Я использовал пример кода где-то на веб-сайте, и он выглядит так:

package gdt.enlightening;

import notify.*;
import javax.swing.*;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class export {
    public static void Export(String path) {

        try {
            // Package.json
            File file = new File(path + "/package.json");

            FileWriter pw = new FileWriter(file);
            pw.write("test");
            pw.write("Hi!");

            pw.write("    \"id\": \"" + main.packageID + "\",\r\n");
            pw.write("    \"name\": \"test\",");

            notify.Notify.info("GDT Enlightening", "Finished exporting without errors.");
        } catch (Exception e) {
            System.out.println(e.toString());
        }
    }
}

Он создает файл, но оставляет его совершенно пустым. Кажется, я не понимаю, почему. Нужен ли мне объект «Файл»?

Я пробовал разные решения, найденные здесь, но это не работает. Я также играл с методом печати.

EDIT: исправлено вызовом pw.close() в конце


person user3902017    schedule 31.08.2014    source источник
comment
Ну, это должно сработать (у меня отлично работает). Вы уверены, что смотрите на нужный файл?   -  person Dici    schedule 31.08.2014
comment
Что такое путь? Пожалуйста, дополните.   -  person Hovercraft Full Of Eels    schedule 31.08.2014
comment
В этом коде нет ничего плохого. Возможно, вы ищете не в той папке.   -  person Boann    schedule 31.08.2014
comment
Возможно, ваш код выдает исключение, которое вы не перехватываете? Еще раз, пожалуйста, уточните. Опубликуйте минимальный пример программы.   -  person Hovercraft Full Of Eels    schedule 31.08.2014
comment
Хорошо, это под оператором try catch. Я удалю это.   -  person user3902017    schedule 31.08.2014
comment
Я удалил попытку улова, см. Мое редактирование.   -  person user3902017    schedule 31.08.2014
comment
Вы не закрыли экземпляр FileWriter. Возможно данные потерялись в буфере.   -  person Jindra Helcl    schedule 31.08.2014
comment
Да это оно. Закрывая FileWriter, вы сбрасываете его.   -  person Hovercraft Full Of Eels    schedule 31.08.2014
comment
Спасибо :) Исправил, закрыв 'pw'!   -  person user3902017    schedule 31.08.2014
comment
@ user3902017 В исходном вопросе вы специально закрываете PrintWriter. Какой смысл было задавать вопрос о полностью фейковом коде? (А кто проголосовал за эту фигню?)   -  person Boann    schedule 31.08.2014
comment
Раньше я пытался закрыть, но это было с PrintWriter. Я изменился из-за другого ответа здесь, и закрытие этого сработало.   -  person user3902017    schedule 31.08.2014
comment
1+ на вопрос за внесенные вами изменения. На будущее: видите ли вы, как ваша минимально полная программа помогает нам идентифицировать вашу проблему? Это отличный способ помочь другим понять вашу проблему и тем самым помочь вам.   -  person Hovercraft Full Of Eels    schedule 31.08.2014
comment
Слава богу, есть такие люди, как ты, @HovercraftFullOfEels!   -  person user3902017    schedule 31.08.2014


Ответы (1)


Вы должны добавить pw.close(), чтобы решить эту проблему.

В противном случае эти данные будут потеряны в буфере.

person user3902017    schedule 01.10.2014
comment
В целях обучения pw.flush() запишет все данные на диск и оставит файл открытым для дальнейшей записи. - person Kent A.; 30.11.2017