首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java重命名一堆文件并将它们移动到一个新文件夹

java重命名一堆文件并将它们移动到一个新文件夹
EN

Stack Overflow用户
提问于 2015-01-07 22:44:32
回答 2查看 570关注 0票数 0

情况就是这样。

我有一个根文件夹,它包含更多的文件夹,每个文件夹都有很多文件。这些文件被格式化为'.srt‘和'.mp4’。由于某些特殊原因,当我开始从服务器下载这些文件时,我在文件的末尾添加了数字。例如,“Intro.srt-1.1”和“blabla720.mp4-1.1”。而且人数还在增加,1.2、1.3、2.1、2.2、3.1、3.2等等。

首先,我要做的是把数字移到前面,比如'1.1 - Intro.srt‘。我已经掌握了如何做是通过将最后的字符向右移动。

现在,我想重命名这些文件,以便与.srt与.mp4匹配,并将它们移动到一个新文件夹中。例如:我想将'1.1 - blabla720.mp4‘重命名为.srt文件的匹配编号,在本例中为'1.1 - Intro.srt’,因此稍后将为‘1.1-Intro.mp4’。然后将它们移动到一个新文件夹“第1阶段”。对于以数字2开头的文件,将移到新的dir‘第2阶段’等。

我想在Java中这样做,当我运行java文件时,它将重命名并移动根dir中的所有文件。(我已经知道如何递归地跟踪整个文件夹)。

所以我在想:

  1. 遍历.srt文件
  2. 获取.srt文件的编号
  3. 搜索.mp4文件的匹配编号
  4. 重命名.mp4
  5. 根据第一个数字将这2个文件移动到目录中
  6. 循环回1号

如何处理这个问题,我应该使用regex吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-08 02:24:17

像这样简单的代码(未经测试的代码)怎么样:

代码语言:javascript
复制
//get all files into a single array
File[] allFiles = getAListOfAllFilesRecursively("rootFolder");

//sort the files by their path (File is Comparable)
Arrays.sort(allFiles);

for (int x = 0; x < allFiles.length(); x++) {
    //if x ends with .srt, rename x+1 (the .mp4) based on the name we parse from x
    //otherwise, rename x (the .mp4) based on the name we parse from x+1
    if (allFiles[x].getName().endsWith(".srt")) {
        String name = getNameFromFileName(allFiles[x].getName());
        renameFileToName(allFiles[x+1], name);
    } else {
        String name = getNameFromFileName(allFiles[x+1].getName());
        renameFileToName(allFiles[x], name);
    }
}

您可能需要在这里和那里添加一些检查(您可能希望在重命名之前验证数字前缀是否匹配,以防您有一个没有匹配的.srt文件)。

getAListOfAllFilesRecursively(String rootFolder)需要像前面提到的那样返回递归检索的文件对象数组。getNameFromFileName(File file)需要将1.1 - SomeName.srt解析为SomeNamerenameFileToName(File file, String name)需要用像1.1 - abcd.mp4这样的文件名将传入的文件重命名为1.1 - SomeName.mp4,为name参数提供SomeName的值(man,有很多名称-s:)。

票数 0
EN

Stack Overflow用户

发布于 2015-01-07 22:51:10

我认为您应该首先将正确的.srt文件分配给正确的.mp4文件。雷吉斯帮不了你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27830016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档