Не могу создать временный файл - PullRequest
5 голосов
/ 05 октября 2010

Я использую этот фрагмент кода для создания временного файла:

String tmpDirectoryOp = System.getProperty("java.io.tmpdir");
File tmpDirectory = new File(tmpDirectoryOp);
File fstream = File.createTempFile("tmpDirectory",".flv", tmpDirectory);
FileOutputStream fos = new FileOutputStream(fstream);
DataOutputStream dos=new DataOutputStream(fos);

dos.writeChars("Write something");

fstream.deleteOnExit();

fos.close();
dos.close();

Но в папке моего проекта нет tmpDirectory.flv.Предложение записи находится в цикле, который занимает довольно много времени, поэтому проблема не в том, что файл удален, прежде чем я смог его увидеть.
Есть идеи?Заранее спасибо

Ответы [ 4 ]

9 голосов
/ 05 октября 2010

Создает пустой файл по умолчанию каталог временных файлов , используя данный префикс и суффикс для генерации его имя. Вызов этого метода эквивалентно вызову createTempFile (префикс, суффикс, ноль).

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

System.getProperty("java.io.tmpdir");  

Вы выполнили deleteOnExit()

public void deleteOnExit ()
Просит, чтобы файл или каталог обозначается этим абстрактным путем удаляется, когда виртуальная машина завершается. Удаление будет предпринято только для нормального прекращения виртуальная машина, как определено Спецификация языка Java. однажды удаление было запрошено, это не Можно отменить запрос. это Поэтому следует использовать метод с волновало.

Примечание: этот метод не должен использоваться для блокировки файлов, как результат протокол нельзя заставить работать надежно. Средство FileLock должно использоваться вместо

5 голосов
/ 05 октября 2010

!!Пожалуйста, закройте потоки !!

File fstream = File.createTempFile("tmpDirectory",".flv"); 
FileOutputStream fos = new FileOutputStream(fstream); 
DataOutputStream dos=new DataOutputStream(fos); 

dos.writeChars("Write something"); 

fstream.deleteOnExit(); 

**

fos.close();
dos.close();

**

4 голосов
/ 05 октября 2010

Вы смотрели в папке /tmp?

Если вы хотите создать временный файл в указанной папке, вам нужна функция 3 param createTempFile

0 голосов
/ 05 октября 2010

Попробуйте промыть и закрыть поток.

...