【问题标题】:Android: Where should I save temporary files?Android:我应该在哪里保存临时文件?
【发布时间】:2011-05-05 14:15:25
【问题描述】:

我的应用程序允许用户创建和修改文件。我希望他们能够将文件作为电子邮件附件发送。因此,我需要首先创建并写入一个临时文件,然后将其附加到电子邮件中。不幸的是,根据对以下问题的唯一回答,似乎没有什么好方法可以知道电子邮件应用程序是否已使用临时文件。

Android: problem sending email with attachment from my application

因为我无法收到电子邮件已处理完文件的任何通知,所以我删除临时文件的规则非常糟糕。它们类似于“检查临时文件 onPause 和 onCreate;删除超过 5 分钟的任何内容”。

因为我的规则太难看,我特别关心我应该在哪里写文件。我无法将它们写入内部缓存目录,因为它们的大小可能会大大超过 1mb。创建文件夹设备的sdcard是否合理:“/sdcard/myapp_tmp”?这种情况的常见做法是什么?

【问题讨论】:

    标签: android


    【解决方案1】:

    您可以使用 Context 的 getExternalCacheDir() 方法获取文件引用,您可以在其中将文件存储在 SD 卡上。当然,您必须像往常一样进行常规检查以确保外部存储已安装并可写,但这可能是存储该类型临时文件的最佳位置。您可能想要做的一件事就是设置您可以在缓存目录中使用的最大空间量,然后,每当您需要写入新的临时文件时,如果该文件超过最大空间,则开始删除临时文件,从最旧的开始,直到有足够的空间。

    编辑:或者,也许这样的事情会起作用:

    if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
        File externalRoot = Environment.getExternalStorageDirectory();
        File tempDir = new File(externalRoot, ".myAppTemp");
    }
    

    前置“.”应该隐藏文件夹,我很确定。

    【讨论】:

    • 谢谢。不幸的是,该方法是 API 8 级。我曾希望支持 6 级及更高级别。
    • 啊,原来如此。我添加了一个适用于 API 级别 1+ 的新建议。
    • "。"确实使目录隐藏。完美的。谢谢。
    • 如果用户没有安装 sd 卡怎么办,如果用户的内存超过 gbs,则没有用户保留 sd 卡。
    • 即使在gbs内存的设备中,也存在外部存储目录和外部缓存目录的路径,所以不用担心。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多