我的应用程序允许用户创建和修改文件。我希望他们能够将文件作为电子邮件附件发送。所以,我需要先创建并写入一个临时文件,然后将其附加到电子邮件中。不幸的是,根据对以下问题的单独回复,似乎没有好办法知道电子邮件应用程序是使用临时文件完成的。
Android: problem sending email with attachment from my application
因为我无法收到任何关于电子邮件已完成文件的通知,我删除临时文件的规则非常糟糕。它们类似于“检查onPause和onCreate上的临时文件;删除超过5分钟的任何内容”。
因为我的规则太丑了,所以我特别担心应该在哪里编写文件。我无法将它们写入内部缓存目录,因为它们的大小可能会大大超过1mb。创建文件夹设备的SD卡是否合理:“/ sdcard / myapp_tmp”?这种情况的常见做法是什么?
答案 0 :(得分:12)
您可以使用Context的getExternalCacheDir()
方法获取File引用,您可以在其中存储SD卡上的文件。当然,您必须像往常一样进行常规检查以确保外部存储是可挂载和可写的,但这可能是存储该类型临时文件的最佳位置。您可能想要做的一件事就是设置可以在缓存目录中使用的最大空间量,然后,只要您需要编写新的临时文件,如果该文件超过最大空间,则开始删除临时文件,从最旧的文件开始,直到有足够的空间。
编辑:或者,也许这样的事情可行:
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File externalRoot = Environment.getExternalStorageDirectory();
File tempDir = new File(externalRoot, ".myAppTemp");
}
预先加上“。”应该隐藏文件夹,我很确定。