【问题标题】:Deleting files created with FileOutputStream删除使用 FileOutputStream 创建的文件
【发布时间】:2010-07-20 14:53:10
【问题描述】:

我正在为 Android 平台开发。
我的应用通过一个简单的调用来创建一个临时文件:

FileOutputStream fos = openFileOutput("MY_TEMP.TXT", Mode);

它工作正常,因为我可以对其进行写入和正常阅读。

问题是当我退出应用程序时,我想删除这个文件。我用过:

File f = new File(System.getProperty("user.dir"), "MY_TEMP.TXT");
f.delete()

但它总是返回 false 并且文件没有被删除。
我试过了:

File f = new File("MY_TEMP.TXT");
f.delete();

它也不起作用。

【问题讨论】:

    标签: java android file-io fileoutputstream


    【解决方案1】:

    我查看了这篇帖子,删除从 FileOutputStream 创建的文件的最佳方法是从 Context 方法 deleteFile(TEMP_FILE) 进行简单调用,就这么简单。

    【讨论】:

    • 没错!这非常简单!只是调用 deleteFile(TEMP_FILE);它直接转到分配给配置文件的文件夹,并且根据文档是可移植的。它适用于我的需要。哇,我完全走错了路!无论如何,谢谢你们为我指出正确的方向。
    • 是的,删除使用 FileOutputStream 创建的文件确实是最快的方法
    【解决方案2】:

    您无法删除已打开的文件。您需要在删除之前关闭流。

    fos.close();
    f.delete();
    

    也就是说,我宁愿使用File#createTempFile() 让底层平台进行自动清理工作,并避免在File 中使用相对路径带来的潜在可移植性问题。

    【讨论】:

    • 来自createTempFile 的文档:“此方法仅提供临时文件工具的一部分。要安排由此方法创建的文件自动删除,请使用deleteOnExit() 方法。 "
    • R. Bemrose:一个不错的操作系统会定期清理临时目录。
    • @BalusC:很遗憾,Windows 不是一个像样的操作系统。 ;) 而且我不能代表 Android 谈论它会如何处理。
    • 同意 R. Bemrose 的deleteOnExit() 方法。它在过去非常有用。
    • 感谢大家的回复。我在使用完 FileOutputStream 对象后立即关闭它,然后再尝试删除它。临时文件让我担心的一件事是,在用户决定完成活动过程之前,我需要保留文件的信息。这很棘手,因为我不想在接到电话或用户按下主页或返回按钮时丢失文件内容。如果活动停止,我需要保留数据,因为它是一个顺序过程。必须删除文件,直到用户单击完成按钮。
    【解决方案3】:

    在您尝试删除文件之前,请仔细检查 Stream 是否已关闭。

    【讨论】:

      【解决方案4】:

      您已经有了一些可靠的答案,但我只想提一下File.deleteOnExit(),它会在 VM 退出时安排删除文件。

      --编辑--

      您仍然应该关闭连接到该文件的所有流。

      【讨论】:

      • 我不是说会。只是另一种删除文件的方法:)
      【解决方案5】:

      您需要先关闭文件,然后再删除它。使用下面的代码。

              FileOutputStream fos = openFileOutput("MY_TEMP.TXT",Mode);
              File f = new File(System.getProperty("user.dir"),"MY_TEMP.TXT");
              fos.close();
              File f = new File("MY_TEMP.TXT");
              f.delete();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-09
        • 1970-01-01
        • 2019-11-10
        • 2021-08-16
        • 2020-04-26
        • 2016-10-09
        相关资源
        最近更新 更多