在Java中生成唯一且简短的文件名的最佳方法是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (120)

我不一定想使用UUID,因为它们相当长。

该文件只需要在其目录中是唯一的。

想到的一个想法是使用File.createTempFile(String prefix, String suffix),但这似乎是错误的,因为该文件不是临时的。

需要处理在同一毫秒内创建的两个文件。

提问于
用户回答回答于

那么,你可以使用3参数版本:File.createTempFile(String prefix, String suffix, File directory)它可以让你把它放在你想要的地方。除非你告诉它,否则Java不会以与其他文件不同的方式对待它。唯一的缺点是文件名保证至少为8个字符(后缀最少3个字符,加上函数生成的5个或更多字符)。

如果这对你来说太长了,我想你总是可以从文件名“a”开始,然后循环“b”,“c”等,直到找到一个不存在的文件。

用户回答回答于

我会使用Apache Commons Lang库(http://commons.apache.org/lang).

有一个类org.apache.commons.lang.RandomStringUtils可以用来生成给定长度的随机字符串。非常方便,不仅适用于文件名生成!

这是一个例子:

String ext = "dat";
File dir = new File("/home/pregzt");
String name = String.format("%s.%s", RandomStringUtils.randomAlphanumeric(8), ext);
File file = new File(dir, name);

扫码关注云+社区