Java 重命名zip文件中的重复文件

Java 重命名zip文件中的重复文件,java,string,file,rename,archive,Java,String,File,Rename,Archive,我有几个文件,包括我必须压缩到存档中的重复文件。你知道在创建存档文件ex(cat.txt,cat(1).txt,cat(2).txt…)之前,有什么工具可以重命名重复文件吗?在某个类中添加静态字段,并带有一些初始值 static int number = 1; 然后,在java代码中,您可以使用java 8 streams and Files类以这种方式重命名重复项: Set<String> files = new HashSet<String>(); you

我有几个文件,包括我必须压缩到存档中的重复文件。你知道在创建存档文件ex(cat.txt,cat(1).txt,cat(2).txt…)之前,有什么工具可以重命名重复文件吗?

在某个类中添加静态字段,并带有一些初始值

static int number = 1;
然后,在java代码中,您可以使用java 8 streams and Files类以这种方式重命名重复项:

Set<String> files = new HashSet<String>();

    youCollectionOfFiles.stream().forEach((file)->{
        if (files.add(file.getFileName().toString()) == false) {
            try {
                //rename the file
                Files.move(file, 
                        file.resolveSibling(file.getFileName().toString() + (number++)));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    });;
Set files=new HashSet();
YouCollectionOffices.stream().forEach((文件)->{
if(files.add(file.getFileName().toString())==false){
试一试{
//重命名文件
文件。移动(文件,
file.resolveSibling(file.getFileName().toString()+(number++));
}捕获(例外e){
e、 printStackTrace();
}
}
});;

我创建了以下代码,可以轻松删除重复项:

static void renameDuplicates(String fileName, String[] newName) {
    int i=1;
    File file = new File(fileName + "(1).txt");
    while (file.exists() && !file.isDirectory()) {
        file.renameTo(new File(newName[i-1] + ".txt"));
        i++;
        file = new File(fileName + "(" + i + ").txt");
    }
}
使用也很简单:

String[] newName = {"Meow", "MeowAgain", "OneMoreMeow", "Meowwww"};
renameDuplocates("cat", newName);
结果是:

cat.txt     ->    cat.txt
cat(1).txt  ->    Meow.txt
cat(2).txt   ->   MeowAgain.txt
cat(3).txt   ->   OneMoreMeow.txt
请记住,重复的数量应小于或等于给定字符串数组中的备选名称。您可以通过进行阻止,同时循环修改:

while (file.exists() && !file.isDirectory() && i<=newName.length)

while(file.exists()&&&!file.isDirectory()&&i尝试以下方法:

File folder = new File("your/path");
HashMap<String,Integer> fileMap = new HashMap<String,Integer>();
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
    if(fileMap.containsKey(listOfFiles[i])){
             String newName = listOfFiles[i]+"_"
                +fileMap.get(listOfFiles[i]);
             fileMap.put(listOfFiles[i],fileMap.get(listOfFiles[i])+1);
             listOfFiles[i].renameTo(newName);
             fileMap.put(newName,1); // can be ommitted
    }else{
            fileMap.put(listOfFiles[i],1);
    }
}
File folder=新文件(“您的/path”);
HashMap fileMap=新的HashMap();
File[]listOfFiles=folder.listFiles();
for(int i=0;i
你确定这是一个Java问题吗?为什么不呢?他添加了Java标记,因此他想用Java制作,因此我们给了他一个Java代码。谢谢,但我当时想的是有一些库为我做这件事。我不知道任何库。总之,使用一小段代码(最多10行)也可以。