在我的应用程序中,我添加了添加和保存每天图片的可能性,以Fragment
表示。
为了将图片保存在SD卡上,我目前使用File.createTempFile
函数:
File imageFile = File.createTempFile(imageFileName, MyApplication.JPEG_FILE_SUFFIX, MyApplication.getAlbumDir());
我实际上也尝试了标准方法:
File imageFile = new File(MyApplication.getAlbumDir(), imageFileName + MyApplication.JPEG_FILE_SUFFIX);
两者都可以使用,但是就我而言,第一个要优于第二个,因为
createTempFile
函数在文件名的末尾添加了一个长随机数,使其具有唯一性。举个例子,这是我对两种方法的理解:
使用 createTempFile :
IMG_2013-06-18_-1961144729.jpg
使用新文件:
IMG_2013-06-18_.jpg
最后,我的问题是,继续使用
createTempFile
保存图片是否安全?还是我必须使用标准方法并添加一些代码来生成唯一文件名?应该只用于临时文件吗?我查看了有关该函数的文档,但未发现使用该函数代替
new File
可能带来的后果。谢谢
最佳答案
听起来您的应用正在创建文件,因此您需要保证文件名唯一。您可以在应用程序中保留某种计数器(保存到首选项或数据库)并使用它。然后,您可以创建更短/更受控制的名称,并自己控制唯一性。或者,您可以使用createTempFile(),这将确保您获得唯一的文件名(但仅获得文件名的部分控制权)。听起来好像您更喜欢createTempFile(),所以如果您对它生成的文件名感到满意,则没有理由不继续使用它。除了不能完全控制文件名格式之外,没有其他缺点。