Android:我应该在哪里保存临时文件?

标签 android

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

Android: problem sending email with attachment from my application

因为我无法收到任何关于文件已完成的电子邮件通知,所以我删除临时文件的规则非常糟糕。它们类似于“在暂停和创建时检查临时文件;删除任何超过 5 分钟的文件”。

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

最佳答案

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

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

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

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

关于Android:我应该在哪里保存临时文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5899165/

相关文章:

java - Android 将图像上传到服务器,将带有文本字段的路径写入数据库并检索到 ListView

java - 如何在Parcelable对象中读取/写入int?

android - 如何在android中的imageview中显示相机拍摄的照片

java - Eclipse调试Android时如何查看异常详情?

c++ - gdb 输入/输出错误远程调试到 Android

android - 应用重启后,Google Map API v2 不会更新 map

android - TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA 的 IntentNotFoundException

android - 应用中心构建,错误 :/usr/bin/jarsigner failed with return code: 1

Android: bundle 始终为空

Android - 是否可以有硬件交互方法的内容提供者?