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

问题描述 投票:15回答:3

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

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

有没有其他更好的方法来获得独特的字符串?

android random
3个回答
15
投票

使用java.util.UUID。看看产生所谓的randomUUIDUniversally unique identifier

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


7
投票

使用java.util.UUID

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

3
投票

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

ID (PK) | original filename | original URL

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

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

0 
+--- 0
     +---- 01.jpg
     +---- 02.jpg
     +---- ...
     +---- 0f.jpg
+--- 1
     +---- 10.jpg
     +---- ...
     +---- cc.jpg

将主键转换为十六进制之后也可以是一个更干净的解决方案,但您必须为文件名决定左边距,这将是目录树深度和每个叶目录的文件数的函数。

© www.soinside.com 2019 - 2024. All rights reserved.