有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (6) 个答案

  1. # 1 楼答案

    用于重命名给定目录中文件列表的示例代码。在下面的示例中,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");
        }
    }
    
  2. # 2 楼答案

    类似的操作应该可以(Windows版本):

    import java.io.*;
    
    public class RenameFile {
        public static void main(String[] args) {
            // change file names in 'Directory':
            String absolutePath = "C:\\Dropbox\\java\\Directory";
            File dir = new File(absolutePath);
            File[] filesInDir = dir.listFiles();
            int i = 0;
            for(File file:filesInDir) {
                i++;
                String name = file.getName();
                String newName = "my_file_" + i + ".pdf";
                String newPath = absolutePath + "\\" + newName;
                file.renameTo(new File(newPath));
                System.out.println(name + " changed to " + newName);
            }
        } // close main()
    } // close class
    
  3. # 3 楼答案

    如果您在Windows上,则应使用命令提示符或。蝙蝠档案。Windows支持在操作系统级别以本机方式进行通配符重命名,因此它将比Java快几个数量级,Java必须迭代所有名称并对每个名称发出重命名调用

  4. # 4 楼答案

    使用File.listFiles(...)列出目录中的文件,String.substring(...)形成新的文件名,File.rename(...)进行重命名

    但我建议您在开始重命名之前,让应用程序检查它是否可以重命名所有文件,而不会发生任何冲突

    但是@Pascal的评论是正确的。Java不是做这类事情的最简单工具

  5. # 5 楼答案

    如果您在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");
            }
        }
    }
    
  6. # 6 楼答案

    对于这类工作,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.eachFileRecurse而不是File.eachFile