открыть временный файл в Java - PullRequest
5 голосов
/ 18 мая 2009

Я записываю строку во временный файл (temp.txt), и я хочу, чтобы этот файл открывался после нажатия кнопки моего окна awt, он должен удаляться при закрытии этого файла (после открытия этого файла), как я могу это сделать?

Это код, который я использовал для создания временного файла в Java:

File temp = File.createTempFile("temp",".txt");

FileWriter fileoutput = new FileWriter(temp);
Bufferedwriter buffout = new BufferedWriter(fileoutput);

Ответы [ 4 ]

19 голосов
/ 18 мая 2009

Файл, созданный:

File temp = File.createTempFile("temp",".txt");

Не будет удалено, см. Javadoc , вам нужно позвонить

temp.deleteOnExit();

, поэтому JVM удалит файл при выходе ...

4 голосов
/ 18 мая 2009

Как насчет чего-то вроде:

if (!temp.delete())
{
    // wasn't deleted for some reason, delete on exit instead
    temp.deleteOnExit();
}
1 голос
/ 18 мая 2009

Некоторые ссылки, которые могут вам помочь:

0 голосов
/ 18 мая 2009

Чтобы выполнить операцию при нажатии кнопки, вам потребуется код примерно такой:

    button.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(ActionEvent event) {
            fileOperation();
        }
    }
...
private void fileOperation() {
    ... do stuff with file ...
}

Вероятно, вы можете найти много примеров с Google. Обычно код анонимного внутреннего класса должен быть коротким и просто переводить событие и контекст в операции, имеющие значение для внешнего класса.

В настоящее время вам необходимо вручную удалить файл с помощью File.delete после его закрытия. Если вы действительно хотите, вы можете расширить, скажем, RandomAccessFile и переопределить close для удаления после закрытия. Я полагаю, что delete-on-close рассматривался как режим для открытия файла в JDK7 (не знаю, есть он или нет).

Простая запись в файл, как в вашем коде, была бы бессмысленной. Вероятно, вы захотите удалить файл после закрытия потока чтения, а не потока записи. Неплохая идея избегать временных файлов, если возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...