Mic*_*ber 28 java file-io file
我使用SWT在Java中编写应用程序.我想创建唯一的文件名.但我不想在硬盘上创建它.附加功能:我想在指定文件夹中创建唯一的文件名.
public String getUniqueFileName(String directory, String extension) {
//create unique file name
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*ebb 13
从你的问题我假设你已经看到File.createTempFile()
总是创建一个文件,而不仅仅是允许你生成名称.
但为什么不调用该方法然后删除创建的临时文件? createTempFile()
完成了在指定目录中查找唯一文件名的所有工作,并且由于您创建了该文件,因此您可以确定也将删除它.
File f = File.createTempFile("prefix",null,myDir);
String filename = f.getName();
f.delete();
Run Code Online (Sandbox Code Playgroud)
在文件名中使用时间戳?
当然,如果您具有非常高的并发性,这可能不起作用.
例如:
public String getUniqueFileName(String directory, String extension) {
return new File(directory, new StringBuilder().append("prefix")
.append(date.getTime()).append(UUID.randomUUID())
.append(".").append(extension).toString()).getAbsolutePath();
}
Run Code Online (Sandbox Code Playgroud)
正如John Oxley的回答所示.UUID可能是一种解决方案,因为您可以使用4种不同的方案来创建它们.虽然碰撞的可能性很小.如果将时间戳与随机UUID组合在一起,则任何冲突的可能性都会变得非常小.
归档时间: |
|
查看次数: |
43586 次 |
最近记录: |