java中重命名文件的最佳方法是,一个目录中大约有500个文件
我在一个目录中有500个pdf文件。我想删除文件名的前五个字符并对其重命名。使用java中重命名文件的最佳方法是,一个目录中大约有500个文件,java,file-rename,Java,File Rename,我在一个目录中有500个pdf文件。我想删除文件名的前五个字符并对其重命名。使用文件.listFiles(…)列出目录中的文件,字符串.substring(…)形成新的文件名,使用文件.rename(…)进行重命名 但我建议您在开始重命名之前,让应用程序检查它是否可以重命名所有文件,而不会发生任何冲突 但是@Pascal的评论是正确的。Java并不是做这类事情的最简单的工具。对于这类工作,Java是一个糟糕的选择。更好的选择是像Groovy这样的JVM脚本语言。如果你想追求这个选择 第1步: 下
文件.listFiles(…)
列出目录中的文件,字符串.substring(…)
形成新的文件名,使用文件.rename(…)
进行重命名
但我建议您在开始重命名之前,让应用程序检查它是否可以重命名所有文件,而不会发生任何冲突
但是@Pascal的评论是正确的。Java并不是做这类事情的最简单的工具。对于这类工作,Java是一个糟糕的选择。更好的选择是像Groovy这样的JVM脚本语言。如果你想追求这个选择 第1步: 下载并安装Groovy 第二步: 启动groovy控制台 第三步: 运行此脚本
def dirName = "/path/to/pdf/dir"
new File(dirName).eachFile() { file ->
def newName = file.getName()[5..-1]
File renamedFile = new File(dirName + "/" + newName)
file.renameTo(renamedFile)
println file.getName() + " -> " + renamedFile.getName()
}
这里我假设所有文件都在目录
/path/to/pdf/dir
中。如果其中一些文件位于该目录的子目录中,则使用File.eachFile recurse
而不是File.eachFile
如果您在Windows上,则应使用命令提示符或.bat文件。Windows支持在操作系统级别以本机方式重命名通配符,因此它比Java快几个数量级,Java必须迭代所有名称并对每个名称发出重命名调用。用于重命名给定目录中文件列表的示例代码。在下面的示例中,c:\Projects\sample
是文件夹,下面列出的文件已重命名为0.txt、1.txt、2.txt等
我希望这能解决你的问题
import java.io.File;
import java.io.IOException;
public class FileOps {
public static void main(String[] argv) throws IOException {
File folder = new File("\\Projects\\sample");
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
File f = new File("c:\\Projects\\sample\\"+listOfFiles[i].getName());
f.renameTo(new File("c:\\Projects\\sample\\"+i+".txt"));
}
}
System.out.println("conversion is done");
}
}
导入java.io.File;
导入java.io.IOException;
公共类文件操作{
公共静态void main(字符串[]argv)引发IOException{
文件夹=新文件(“\\Projects\\sample”);
File[]listOfFiles=folder.listFiles();
for(int i=0;i
类似的操作(Windows版本):
如果您在MacOS X上,并且希望从外部驱动器重命名文件夹和子文件夹中的所有文件,则以下代码将执行此操作:
public class FileOps {
public static void main(String[] argv) throws IOException {
String path = "/Volumes/FAT32/direito_administrativo/";
File folder = new File(path);
changeFilesOfFolder(folder);
}
public static void changeFilesOfFolder(File folder) {
File[] listOfFiles = folder.listFiles();
if (listOfFiles != null) {
int count = 1;
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
File f = new File(folder.getPath() + "/" + listOfFiles[i].getName());
f.renameTo(new File(folder.getPath() + "/" + count + ".flv"));
count++;
} else if (listOfFiles[i].isDirectory()) {
changeFilesOfFolder(listOfFiles[i]);
}
}
} else {
System.out.println("Path without files");
}
}
}
公共类文件操作{
公共静态void main(字符串[]argv)引发IOException{
字符串路径=“/Volumes/FAT32/direito_administrativo/”;
文件夹=新文件(路径);
changeFilesOfFolder(文件夹);
}
公共静态void changeFilesOfFolder(文件文件夹){
File[]listOfFiles=folder.listFiles();
if(listOfFiles!=null){
整数计数=1;
for(int i=0;i
这将更改您提到的文件夹的所有文件名:
for (int i = 0; i < folders.length; i++) {
File folder = new File("/home/praveenr/Desktop/TestImages/" + folders[i]);
File[] files2 = folder.listFiles();
int count = 1;
for (int j = 0; j <files2.length; j++,count++) {
System.out.println("Old File Name:" + files2[j].getName());
String newFileName = "/home/praveenr/Desktop/TestImages/" + folders[i]+"/file_"+count+"_original.jpg";
System.out.println("New FileName:" + newFileName);
files2[j].renameTo(new File(newFileName));
}
}
for(int i=0;i 对于(intj=0;jWell),请尝试以下示例代码
import java.io.File;
public class RenameFile
{
public String callRename(String flname, String fromName, String toName)
{
try
{
File fe = new File(flname);
File allFile[] = fe.listFiles();
for(int a = 0; a < allFile.length; a++)
{
String presentName = (allFile[a].toString().replaceAll(fromName, toName));
allFile[a].renameTo(new File(presentName));
}
return allFile + " files renamed successfully.!!!";
}
catch(Exception ae)
{
return(ae.getMessage());
}
}
public static void main(String[] args)
{
RenameFile rf = new RenameFile();
System.out.println("Java rename files in directory : ");
String lastResult = rf.callRename("yourpathname", "from", "to");
System.out.println(lastResult);
}
}
导入java.io.File;
公共类重命名文件
{
公共字符串callRename(字符串flname、字符串fromName、字符串toName)
{
尝试
{
文件fe=新文件(flname);
File allFile[]=fe.listFiles();
for(int a=0;a
最好的方法是不使用Java,而是使用bash或脚本语言。这能解决这个问题吗?/f“tokens=1,2,3”%i in(fileList.txt)DO ren“%i%j%l”的/f“tokens=1,2,3”%i in(fileList.txt)DO ren“%i%j%l”%l+1,因为我认为这个答案不值得3次否决票,特别是在没有任何解释的情况下。你能证明你的观点吗?这真的取决于他在寻找什么。如果他想要一个基于GUI的应用程序,Java就可以了。@SPI我假设(可能是错误的)这是一次性任务+1,因为如果这是一次性任务,您的解决方案可能是最合适的!最好继续使用java程序或命令提示符,他们不需要下载额外的东西。。。
import java.io.File;
public class RenameFile
{
public String callRename(String flname, String fromName, String toName)
{
try
{
File fe = new File(flname);
File allFile[] = fe.listFiles();
for(int a = 0; a < allFile.length; a++)
{
String presentName = (allFile[a].toString().replaceAll(fromName, toName));
allFile[a].renameTo(new File(presentName));
}
return allFile + " files renamed successfully.!!!";
}
catch(Exception ae)
{
return(ae.getMessage());
}
}
public static void main(String[] args)
{
RenameFile rf = new RenameFile();
System.out.println("Java rename files in directory : ");
String lastResult = rf.callRename("yourpathname", "from", "to");
System.out.println(lastResult);
}
}