Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中重命名文件的最佳方法是,一个目录中大约有500个文件_Java_File Rename - Fatal编程技术网

java中重命名文件的最佳方法是,一个目录中大约有500个文件

java中重命名文件的最佳方法是,一个目录中大约有500个文件,java,file-rename,Java,File Rename,我在一个目录中有500个pdf文件。我想删除文件名的前五个字符并对其重命名。使用文件.listFiles(…)列出目录中的文件,字符串.substring(…)形成新的文件名,使用文件.rename(…)进行重命名 但我建议您在开始重命名之前,让应用程序检查它是否可以重命名所有文件,而不会发生任何冲突 但是@Pascal的评论是正确的。Java并不是做这类事情的最简单的工具。对于这类工作,Java是一个糟糕的选择。更好的选择是像Groovy这样的JVM脚本语言。如果你想追求这个选择 第1步: 下

我在一个目录中有500个pdf文件。我想删除文件名的前五个字符并对其重命名。

使用
文件.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);
   }
}