我有一小段代码
String fileName = "test.txt"
Path path = Paths.get(fileName);
File f = null;
if (Files.exists(path)) {
LOGGER.warn("File allready exists!");
f = new File("COPYOF-" + fileName);
} else {
f = new File(fileName);
}
它可以工作,但它没有按照我想要的方式执行...
我想以“正确”的方式去做。
首次下载时,文件应命名为 test.txt
。第二个 - test(1).txt
。第三:test(2).txt
等
目前它正在下载它作为 test.txt
并且第二次它被命名为 COPYOF-test.txt
并且在第三次尝试它只是覆盖 COPYOF-test.txt
文件。
我正在寻找一种合适的方法来实现这个解决方案,但我不知道该怎么做...
最佳答案
工作代码:
String fileName = "test.txt";
String extension = "";
String name = "";
int idxOfDot = fileName.lastIndexOf('.'); //Get the last index of . to separate extension
extension = fileName.substring(idxOfDot + 1);
name = fileName.substring(0, idxOfDot);
Path path = Paths.get(fileName);
int counter = 1;
File f = null;
while(Files.exists(path)){
fileName = name+"("+counter+")."+extension;
path = Paths.get(fileName);
counter++;
}
f = new File(fileName);
解释:
首先将
扩展名
和不带扩展名的文件名
分开并设置counter=1
然后检查这个文件是否存在。存在则转第2步,否则转第3步。如果文件存在则生成新名称
不带扩展名的文件名
+(
+counter
+)
+extension
并检查此文件是否存在。如果存在,则重复此步骤并增加counter
。此处使用最新生成的文件名创建文件。
关于java - 当文件已经存在时,如何创建一个具有附加递增编号的新文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33232304/