在 Android 中创建临时文件
在 Android 中创建临时文件的最佳方法是什么?
可以 文件。 createTempFile 可以使用吗?文档对此非常模糊。
特别是,尚不清楚使用 File.createTempFile
创建的临时文件何时会被删除(如果有的话)。
What's the best way to create a temporary file in Android?
Can File.createTempFile be used? The documentation is very vague about it.
In particular, it's not clear when temporary files created with File.createTempFile
are deleted, if ever.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
这是我通常做的事情:
至于删除它们,我也不太确定。由于我在缓存的实现中使用了它,因此我手动删除最旧的文件,直到缓存目录大小降至我的预设值。
This is what I typically do:
As for their deletion, I am not complete sure either. Since I use this in my implementation of a cache, I manually delete the oldest files till the cache directory size comes down to my preset value.
内部 和 外部临时文件:
内部缓存
外部缓存
Best practices on internal and external temporary files:
Internal Cache
External Cache
对于临时内部文件,有 2 个选项
1.
2。
这两个选项都会在应用程序缓存目录中添加文件,因此可以根据需要清除以腾出空间,但选项 1 会在文件名末尾添加一个随机数以保持文件的唯一性。它还会添加一个文件扩展名,默认为
.tmp
,但可以通过使用第二个参数将其设置为任何内容。使用随机数意味着尽管指定了文件名,但它不会保持与后缀/文件扩展名一起添加的数字相同(默认为.tmp
),例如,您将文件名指定为 < code>internal_file 并显示为internal_file1456345.tmp
。虽然您可以指定分机号,但无法指定添加的号码。不过,您可以通过file.getName();
找到它生成的文件名,但您需要将其存储在某个地方,以便您可以在需要时使用它,例如删除或读取文件。因此,出于这个原因,我更喜欢第二个选项,因为您指定的文件名是创建的文件名。For temporary internal files their are 2 options
1.
2.
Both options adds files in the applications cache directory and thus can be cleared to make space as required but option 1 will add a random number on the end of the filename to keep files unique. It will also add a file extension which is
.tmp
by default, but it can be set to anything via the use of the 2nd parameter. The use of the random number means despite specifying a filename it doesn't stay the same as the number is added along with the suffix/file extension (.tmp
by default) e.g you specify your filename asinternal_file
and comes out asinternal_file1456345.tmp
. Whereas you can specify the extension you can't specify the number that is added. You can however find the filename it generates viafile.getName();
, but you would need to store it somewhere so you can use it whenever you wanted for example to delete or read the file. Therefore for this reason I prefer the 2nd option as the filename you specify is the filename that is created.您可以使用 context.getCacheDir() 来使用缓存目录。
You can use the cache dir using context.getCacheDir().
您可以使用
File.deleteOnExit()
方法https://developer.android.com/reference/java/io/File.html#deleteOnExit()
这里引用了https://developer.android.com/reference/java/io/File.html#createTempFile(java.lang.字符串、java.lang.String、java.io.File)
You can use the
File.deleteOnExit()
methodhttps://developer.android.com/reference/java/io/File.html#deleteOnExit()
It is referenced here https://developer.android.com/reference/java/io/File.html#createTempFile(java.lang.String, java.lang.String, java.io.File)
简单点做吧。根据文件
https://developer.android.com/training/data-storage/files
使用后删除
Do it in simple. According to documentation
https://developer.android.com/training/data-storage/files
and delete it after usage