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 также может быть более чистым решением, но вам придется решить, будет ли остальное заполнение для имен файлов, которое будет функцией глубины дерева каталогов и количества файлов в каталоге листа.