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

2022-08-31 12:50:45

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

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

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

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


答案 1

好吧,你可以使用3个参数的版本:File.createTempFile(字符串前缀,字符串后缀,文件目录),它可以让你把它放在你想要的地方。除非你告诉它,否则Java不会像对待任何其他文件一样对待它。唯一的缺点是文件名保证长度至少为 8 个字符(前缀至少为 3 个字符,外加函数生成的 5 个或更多字符)。

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


答案 2

我会使用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);