Android: создать уникальную строку для имени файла

Я делаю приложение для Android для просмотра изображений. Это приложение загрузит изображение и сохранит его в папке с кешем.

Итак, в папке с кешем имя файла изображения должно быть уникальным. В настоящее время я использую String.hashCode() для генерации имени файла.

Есть ли другие лучшие способы получения уникальной строки?

Ответ 1

Используйте java.util.UUID. Посмотрите randomUUID, который генерирует так называемый универсальный уникальный идентификатор.

Я действительно не понимаю, как вы собираетесь генерировать "уникальное" значение с помощью String.hashCode. На какой строке вы вызываете hashCode? Цель hashCode - не генерировать уникальные идентификаторы... Это означало генерировать хэш-код для строки, поэтому, если сами строки не уникальны, хэш-коды выиграли ' t также.

Ответ 2

Используйте 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

после преобразования первичного ключа в hex также может быть более чистым решением, но вам придется решить, будет ли остальное заполнение для имен файлов, которое будет функцией глубины дерева каталогов и количества файлов в каталоге листа.