我有一个文件缓存,文件是从不同的网址下载的。我想按其网址名称保存每个文件。不过,这些名称可能会很长,而且我使用的是 FAT32 文件系统的设备 - 因此,在耗尽实际磁盘空间之前,长名称就会耗尽资源。
我正在寻找一种缩短文件名的方法,已经得到了对字符串进行哈希处理的建议。但我不确定哈希值对于两个不同的字符串是否保证是唯一的。如果两个哈希 url 具有相同的哈希值,如果我不小心获取了错误的图像,那就太糟糕了。
最佳答案
您可以生成 UUID对于每个 URL 并将其用作文件名。
UUID 是唯一的(或“实际上唯一的”)并且长度为 36 个字符,因此我猜文件名不会有问题。
从版本 5 开始,JDK 附带了一个用于生成 UUID 的类 (java.util.UUID)。如果有办法将 UUID 与 URL 关联起来,您可以使用随机生成的 UUID,或者可以使用基于名称的 UUID。基于名称的 UUID 始终相同,因此以下情况始终正确:
String url = ...
UUID urlUuid = UUID.nameUUIDFromBytes(url.getBytes);
assertTrue(urlUuid.equals(UUID.nameUUIDFromBytes(url.getBytes)));
关于java - 用哈希缩短长网址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7274969/