【问题标题】:Can not create a temporary file无法创建临时文件
【发布时间】:2010-10-05 08:37:14
【问题描述】:

我正在使用这段代码来创建一个临时文件:

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。写语句是循环的,需要很长时间才能完成,所以问题不在于文件在我看到它之前就被删除了。
任何的想法?提前致谢

【问题讨论】:

  • 它不会出现在您的“项目文件夹”中,而是出现在您的系统临时文件夹中。

标签: java temporary-files


【解决方案1】:

默认创建一个空文件 临时文件目录,使用 给定前缀和后缀生成 它的名字。调用此方法是 相当于调用 createTempFile(prefix, suffix, null).

您可以使用

为您的操作系统获取临时目录
System.getProperty("java.io.tmpdir");  

你已经执行了deleteOnExit()

public void deleteOnExit()
请求文件或目录 用这个抽象路径名表示的是 删除虚拟机时 终止。将尝试删除 仅用于正常终止 虚拟机,由 Java 语言规范。一次 已请求删除,它不是 可以取消请求。这 因此,方法应与 关心。

注意:不应该使用这种方法 用于文件锁定,结果 协议无法正常工作 可靠。 FileLock 工具应该 改为使用。

【讨论】:

  • 根据您的建议,我的 tmp 目录中有一个 tmpDirectory.flv 吗?我没有
  • @mujer esponja 更新了答案
  • 感谢@org.life.java 真的帮助了我
【解决方案2】:

!!请关闭流!

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();

**

【讨论】:

    【解决方案3】:

    您查看过您的/tmp 文件夹吗?

    如果要在指定文件夹中创建临时文件,则需要3 param createTempFile function

    【讨论】:

      【解决方案4】:

      尝试刷新并关闭流。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-07-10
        • 1970-01-01
        • 2013-05-05
        • 1970-01-01
        • 2013-03-22
        • 2020-01-19
        • 2018-11-07
        相关资源
        最近更新 更多