Android:为文件名创建唯一的字符串

时间:2011-02-26 11:15:36

标签: android random

我正在为图像查看器做一个Android应用程序。此应用程序将下载图像,并将它们存储在缓存文件夹中。

因此,在缓存文件夹中,图像文件名必须是唯一的。目前,我使用String.hashCode()来生成文件名。

还有其他更好的方法可以获得独特的字符串吗?

3 个答案:

答案 0 :(得分:15)

使用java.util.UUID。查看生成所谓randomUUIDUniversally unique identifier

我真的不明白你打算如何用String.hashCode生成一个“唯一”值。你在什么字符串上调用hashCode? hashCode的目的不是为了生成唯一的ID ......它的意思是为字符串生成hash code,所以如果字符串本身不是唯一的,那么哈希码也不是。

答案 1 :(得分:7)

使用java.util.UUID

  String uniqueString = UUID.randomUUID().toString();

答案 2 :(得分:3)

ChrisJ建议使用UUID.randomUUID()是一个不错的选择;但我更喜欢用数据库表备份缓存:

ID (PK) | original filename | original URL

然后使用主键作为缓存目录中的文件名。

如果您打算拥有大量文件,请使用以下目录树结构:

0 
+--- 0
     +---- 01.jpg
     +---- 02.jpg
     +---- ...
     +---- 0f.jpg
+--- 1
     +---- 10.jpg
     +---- ...
     +---- cc.jpg
将主键转换为十六进制后的

也可以是一个更干净的解决方案,但您必须为文件名决定左边距,这将是目录树深度和每个叶子目录的文件数的函数。 / p>