Java重命名一堆文件并将其移动到新文件夹

praburangki

所以是这种情况。

我有一个包含更多文件夹的根文件夹,并且每个文件夹都有一堆文件。这些文件的格式为“ .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开头的文件,将被移动到新目录'Stage 2'等。

我想在Java中执行此操作,当我运行Java文件时,它将重命名并移动该根目录中的所有文件。(我已经知道如何递归地跟踪整个文件夹)。

所以我在想:

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

我该如何使用正则表达式?

xpa1492

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

//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文件没有匹配的.mp4,则可能需要在重命名之前验证数字前缀是否确实匹配)。

getAListOfAllFilesRecursively(String rootFolder)需要返回一个递归检索的File对象数组,就像您提到的那样。getNameFromFileName(File file)需要解析1.1 - SomeName.srtSomeNamerenameFileToName(File file, String name)需要重命名文件与文件名的方式通1.1 - abcd.mp41.1 - SomeName.mp4给定的值SomeNamename参数(男人,也有很多的名字-S :)))。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用UNIX Shell脚本保留最新文件并将较旧的文件移动到文件夹

Powershell-获取一定数量的文件并将其移动到新文件夹

Python 3无法压缩文件夹并将其移动到另一个文件夹

如果新文件夹中已存在文件,请使用空格移动文件并重命名

无法将所有文件移动到新文件夹

将具有相同名称的多个文件移动到以文件路径命名的新文件夹中

遍历文件夹/子目录并将找到的正则表达式文件移动到新文件夹中

将一个文件夹(带有图像)拆分为两个并将图像移动到新文件夹

重命名文件夹中的文件,然后将其移动到另一个文件夹

批处理文件以重命名文件夹创建新文件夹

如何通过右键菜单将文件选择移动到新文件夹中?

重命名前一个文件夹中的datetime后如何将文件移动到新文件夹

创建新文件夹并重命名并将所有具有特殊名称的文件夹移到新创建的文件夹中

将.aspx文件移动到新文件夹后,如何设置代码隐藏路径?

TortoiseGit:将文件移动到新文件夹时无法识别为移动

将所有在<time>之后修改的文件夹移动到新文件夹

Shell脚本重命名并将文件从一个文件夹移动到另一个文件夹

如何监视目录中的新文件并将它们移动/重命名到另一个目录?

重命名文件后将其移动到新文件夹

如何使用Gulp编译一堆sass文件并将其移动到另一个文件夹?

Powershell-重命名文件夹中的特定文件-根据之前的最新文件

创建同名的新子文件夹并将文件移动到新文件夹

将所选文件的内容合并到 .txt 中,然后重命名该 txt e 将其移动到另一个文件夹中

从目录中一堆相似命名的文件中获取最新文件 - powershell

使用文件夹名称重命名文件并将它们移动到一个大文件夹

如何使用bash将子文件夹中的所有文件移动到新文件夹中?

如何git将文件夹和文件移动到新文件夹并保留历史记录?

批处理脚本将每组 n 个文件移动到不同的新文件夹

将新文件移动到特定文件夹!谷歌脚本