我有一个文件夹,其中包含许多子文件夹。为了更清楚地说明这里是文件夹的示例:
电影:
电影标题:
Moviefile.mp4(电影文件)
MovieSubtitles.srt(字幕)
电影系列:
电影标题:
电影文件.mp4
电影字幕.srt
我需要将每个 mp4 和 srt 文件重命名为以下“MovieTitle”。如果电影是系列的一部分,则应将其命名为系列“标题 + 电影标题”。让我们以《星球大战》为例来说明系列和如何命名。 “星球大战”将是“电影”中的目录名称。 《星球大战》中有 6 个文件夹,每个文件夹中都有 mp4 和 srt 文件。对于星球大战第 1 集,mp4 和 srt 文件应重命名为:“Star Wars - Episode 1.mp4”和“Star Wars - Episode 1.srt”。如果第 1 集不是系列的一部分,则应将其命名为“Episode 1.mp4”
这是我迄今为止想出的代码:
public static void renaming(File[] files){
String dir1, dir2;
for(File movie: files){ //Main folder containing all of the movies.
dir1 = movie.getName();
for(File filesInMovie: movie.listFiles()){
if(filesInMovie.isDirectory()){ //This means that it is a series.
dir2 = filesInMovie.getName();
for(File i: filesInMovie.listFiles()){
i.renameTo(dir1 + " - " + dir2);
}
}else{
filesInMovie.renameTo(dir1)
}
}
}
}
我意识到 renameTo 是 Java 中的一个实际函数。我以为它会重命名文件,直到我读到它实际做了什么(我对此仍然有点模糊)。所以我的主要问题是如何获得此代码来正确重命名文件。
您应该了解一些额外的事情: 一个目录包含所有电影。 电影文件夹中的每个文件夹都有可能 里面还有其他文件夹(这是一个系列) 里面有mp4和srt文件 如果您有任何疑问请询问!!!
最佳答案
File#getName()
返回一个字符串。您使用它来获取当前文件的名称,然后尝试使用 File#rename(String) 重命名该文件,其中该方法实际上定义为 File#renameTo(File)
。也就是说,参数应该是您尝试重命名文件的文件。
一些建议:
查看
Files.move()
使用此命令将文件移动到目标 - 链接有这样的示例不要对第一个目录使用获取名称方法 - 直接使用文件(类似于下面的内容,但我认为仍然不正确),如果您希望文件位于同一基目录中
电影
i.renameTo(new File(movie," - " + filesInMovie.getName() + ext);
仍然需要扩展文件
ext
,但是它将来自文件i
关于java - 重命名文件夹中的所有文件 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22776243/