3 回答
TA贡献1828条经验 获得超3个赞
这通常是我要做的:
File outputDir = context.getCacheDir(); // context being the Activity pointer
File outputFile = File.createTempFile("prefix", "extension", outputDir);
至于删除它们,我也不完全确定。由于在缓存实现中使用了此功能,因此我手动删除了最早的文件,直到缓存目录大小减小到预设值为止。
TA贡献1797条经验 获得超6个赞
内部和外部临时文件的最佳做法:
内部缓存
如果您想缓存某些数据,而不是永久存储它们,则应使用“ getCacheDir()文件”打开一个文件,该文件代表应用程序应在其中保存临时缓存文件的内部目录。
当设备的内部存储空间不足时,Android可能会删除这些缓存文件以恢复空间。但是,您不应该依赖系统来为您清理这些文件。您应该始终自己维护高速缓存文件,并保持在合理的空间消耗限制内,例如1MB。当用户卸载您的应用程序时,这些文件将被删除。
外部缓存
要打开一个代表您应该在其中保存缓存文件的外部存储目录的文件,请调用getExternalCacheDir()。如果用户卸载您的应用程序,这些文件将被自动删除。
与ContextCompat.getExternalFilesDirs()上述类似,您还可以通过调用来访问辅助外部存储(如果可用)上的缓存目录ContextCompat.getExternalCacheDirs()。
提示:要保留文件空间并保持应用程序的性能,请务必认真管理缓存文件并删除整个应用程序生命周期中不再需要的缓存文件,这一点很重要。
TA贡献1810条经验 获得超4个赞
对于临时内部文件,它们是2个选项
1。
File file;
file = File.createTempFile(filename, null, this.getCacheDir());
2。
File file
file = new File(this.getCacheDir(), filename);
这两个选项都将文件添加到应用程序缓存目录中,因此可以根据需要清除以腾出空间,但是选项1将在文件名的末尾添加一个随机数以保持文件唯一。它还将添加.tmp默认情况下的文件扩展名,但是可以使用2nd参数将其设置为任何文件扩展名。使用随机数意味着尽管指定了文件名,但它不会与添加数字以及后缀/文件扩展名(.tmp默认情况下)相同,例如,您将文件名指定为internal_file,结果为internal_file1456345.tmp。尽管您可以指定扩展名,但不能指定要添加的号码。但是,您可以找到它通过生成的文件名file.getName();,但您需要将其存储在某个位置,以便可以在任何时候使用它,例如,删除或读取文件。因此,由于这个原因,我更喜欢第二个选项,因为您指定的文件名是创建的文件名。
- 3 回答
- 0 关注
- 1396 浏览
添加回答
举报