java - 当文件已经存在时,如何创建一个具有附加递增编号的新文件?

标签 java file

我有一小段代码

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);

解释:

  1. 首先将扩展名不带扩展名的文件名分开并设置counter=1然后检查这个文件是否存在。存在则转第2步,否则转第3步。

  2. 如果文件存在则生成新名称不带扩展名的文件名+(+counter+)+extension 并检查此文件是否存在。如果存在,则重复此步骤并增加 counter

  3. 此处使用最新生成的文件名创建文件。

关于java - 当文件已经存在时,如何创建一个具有附加递增编号的新文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33232304/

相关文章:

java - eclipse 外部工具配置 -> 类路径中引用的库不存在 : org. eclipse.swt

file - OCaml - 如何加载 file.ml

c# - 读取多个非常大的文件的最佳方式

python - 如何在文件名中插入零以使它们的长度相同

java - Tomcat 唯一 SessionId

Java,涉及 "{n} "量词的正则表达式

python mkdir/makesdir 带有特殊符号的文件夹名称

java - FileUtils.copyInputStreamToFile 未上传到我当前的 Java 目录?

java - NiFi ExecuteSQL 处理器字符集异常

java - CrudRepository 按当前时间戳自定义查找