用哈希缩短长网址?

use*_*701 2 java hash url-shortener

我有一个文件缓存,文件是从不同的URL下载的。我想按文件名保存每个文件。这些名称可能会很长,而且我使用的是FAT32文件系统的设备-因此,这些长名称在我用尽实际磁盘空间之前就已经消耗了资源。

我正在寻找一种缩短文件名的方法,已经获得了对字符串进行哈希处理的建议。但是我不确定哈希是否保证对于两个不同的字符串是唯一的。如果两个散列网址具有相同的散列值,而我不小心提取了错误的图像,那将是很糟糕的。

谢谢

And*_*ues 5

您可以为每个URL 生成一个UUID并将其用作文件名。

UUID是唯一的(或“实际上是唯一的”),长度为36个字符,因此我猜文件名不会有问题。

从版本5开始,JDK附带了一个用于生成UUID的类(java.util.UUID)。如果有办法将它们与URL关联,则可以使用随机生成的UUID,也可以使用基于名称的UUID。基于名称的UUID始终相同,因此以下情况始终成立:

String url = ...
UUID urlUuid = UUID.nameUUIDFromBytes(url.getBytes);
assertTrue(urlUuid.equals(UUID.nameUUIDFromBytes(url.getBytes)));
Run Code Online (Sandbox Code Playgroud)