이미지 뷰어 용 안드로이드 응용 프로그램을 만들고 있습니다. 이 앱은 이미지를 다운로드하고 캐시 폴더에 저장합니다.Android : 파일 이름에 고유 한 문자열 만들기
따라서 캐시 폴더에서 이미지 파일 이름은 고유해야합니다. 현재 String.hashCode()를 사용하여 파일 이름을 생성합니다.
고유 한 문자열을 얻는 다른 더 좋은 방법이 있습니까?
이미지 뷰어 용 안드로이드 응용 프로그램을 만들고 있습니다. 이 앱은 이미지를 다운로드하고 캐시 폴더에 저장합니다.Android : 파일 이름에 고유 한 문자열 만들기
따라서 캐시 폴더에서 이미지 파일 이름은 고유해야합니다. 현재 String.hashCode()를 사용하여 파일 이름을 생성합니다.
고유 한 문자열을 얻는 다른 더 좋은 방법이 있습니까?
java.util.UUID을 사용하십시오. 소위 Universally unique identifier을 생성하는 randomUUID을보십시오.
String.hashCode를 사용하여 "고유 한"값을 생성하는 방법을 실제로 이해하지 못합니다. 어떤 문자열에서 hashCode를 호출합니까? hashCode의 목적은 고유 한 ID를 생성하는 것이 아닙니다. 문자열에 대해 hash code을 생성하기위한 것이므로 문자열 자체가 고유하지 않으면 해시 코드도 포함되지 않습니다.
ChrisJ가 UUID.randomUUID()를 사용하는 것이 좋습니다. 캐시를 데이터베이스 테이블로 백업하는 것을 선호합니다.
ID (PK) | original filename | original URL
그런 다음 기본 키를 cache dir의 파일 이름으로 사용합니다. 또한 청소기 해결책이 될 수있다 진수에 기본 키를 변환 한 후
0
+--- 0
+---- 01.jpg
+---- 02.jpg
+---- ...
+---- 0f.jpg
+--- 1
+---- 10.jpg
+---- ...
+---- cc.jpg
,하지만 당신은 왼쪽 패딩을 결정해야합니다
이 같은 디렉토리 트리 구조를 갖는 파일을 많이 가지고하려는 경우
파일 이름은 디렉토리 트리 깊이와 리프 디렉토리 당 파일 수의 함수가됩니다.구현 가능합니다. 하지만 이미 다른 방식으로 캐싱하고 있습니다. 그리고 파일을 로컬에 완전히 저장 한 후에 만 캐시합니다. – James
답변 해 주셔서 감사합니다. 사실, 내가 한 일은 로컬에 온라인 이미지를 저장하는 것입니다. 각 이미지마다 고유 한 URL이 있으므로 url.hashcode를 사용하여 파일 이름을 생성합니다. 해시 코드를 사용하여 성능 문제가 발생하는지 궁금합니다. 따라서 캐시 파일을 저장하는 일반적인 방법을 알고 고유하게 만들고 싶습니다. – James
특정 URL에 대해 고유하고 고유 한 ID를 얻을 수 있다는 것이 전체 목적입니다. 랜덤 UUID를 만들면 URL과 ID의 맵을 유지해야합니다. 그러나 hashcode는 항상 특정 id에 대해 동일한 id를 반환합니다. – Sileria
문자열 uuid = UUID.randomUUID(). toString(). replaceAll ("-", ""); –