一个Java写的批量重命名文件小程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个Java写的批量重命名文件小程序相关的知识,希望对你有一定的参考价值。

今天学了一下java的File操作,然后乘着兴趣,写了一个可以批量处理文件命名的小程序,小程序还有一些不完美的地方,但胜在有趣。比如可以快捷更改你不想让别人看到的文件之类的...限个人使用,造成数据丢失后果自负哟。

import java.io.File;
import java.sql.Date;
import java.util.Scanner;

public class RenameTool {
    boolean useDefaultName = false;
    boolean useDefaultSuffix = false;
    Scanner sc = new Scanner(System.in);

    // 重命名方法
    private void reName() {
        
        String filePath=getPath();
        String diyName=getDiyName();
        String setDiySuffix = setDiySuffix();
        String suffix="";
        File file=new File(filePath);
        File[] filesList = file.listFiles();
        //判断要DIY的名字是否为空,空即默认以修改时间命名
        if (diyName==null) {
            useDefaultName=true;
        }
            
        if (useDefaultName) {//以修改时间格式命名
            //得到最后一次修改时间
            for (int i = 0; i < filesList.length; i++) {
            long lastModified = filesList[i].lastModified();
            Date date=new Date(lastModified);
            String dateName=date.toString();
            if (useDefaultSuffix){
                //得到每个文件的后缀名
                suffix=getSuffix(filesList[i]);
            }else{
                suffix=setDiySuffix;
            }
            //文件名:路径+\\+名+后缀,注意文件路径后面还有斜杠
            String newFileName=filePath+"\\\\"+dateName+"-"+(i+1)+suffix;
            File newFile=new File(newFileName);
            filesList[i].renameTo(newFile);
            System.out.print(filesList[i].getName()+"已修改为:");
            System.out.println(newFileName);
            }
        }else {    //以自定义格式命名
            for (int j = 0; j < filesList.length; j++) {
                if (useDefaultSuffix){
                    //得到每个文件的后缀名
                    suffix=getSuffix(filesList[j]);
                }else{
                    suffix=setDiySuffix;
                }
                String newFileName=filePath+"\\\\"+diyName+"-"+(j+1)+suffix;
                File newFile=new File(newFileName);
                System.out.print(filesList[j].getName()+"已修改为:");
                filesList[j].renameTo(newFile);
                System.out.println(newFileName);
            }
        }
    }
                
    //得到文件路径
    private String getPath() {
        // java中有转移字符,如需输入双斜杠则输入四斜杠
        System.out.println("请输入你要批量修改文件的路径,格式:C:\\\\XXX\\\\XX");
        String path = sc.next();
        System.out.println(path);
        // sc.close();
        return path;
    }
    //自定义文件名,可以默认选择以修改时间为名
    private String getDiyName() {
        System.out.println("请输入要修改的新文件名格式(如想以时间命名则输入Y/y): ");
        String newName = sc.next();
        if (newName.equals("y") || newName.equals("Y")) {
            return null;
        }

        return newName;
    }
        //得到后缀名方法
    private String getSuffix(File file) {

        String fileName = file.getName();
        int length = fileName.length();
        // 用最右边的"."来查找后缀名
        int pointIndex = fileName.lastIndexOf(".");
        String suffix = fileName.substring(pointIndex, length);

        return suffix;

    }
        //如不想用以前的后缀名,可以自由更改
    private String setDiySuffix() {
        System.out.println("是否统一修改文件后缀名?确定请输入格式(),否则请输入N/n :");
        String input = sc.next();
        sc.close();
        if (input.equals("n") || input.equals("N")) {
            useDefaultSuffix = true;
            return null;
        } else {
            useDefaultSuffix = false;
            input="."+input;
            return input;
        }

    }

    // 提供静态方法
    public static void begin() {
        RenameTool t = new RenameTool();
        t.reName();
    }
    //主函数
    public static void main(String[] args) {
        RenameTool t = new RenameTool();
        t.reName();
    }

}

如果有时间,自己再写一个清理垃圾文件的小程序~~或者有些文件不能直接删除的,用来强力删除。

 

以上是关于一个Java写的批量重命名文件小程序的主要内容,如果未能解决你的问题,请参考以下文章

网页版批量文件重命名

Java用来进行批量文件重命名,批量提取特定类型文件

[经典] 使用Python批量重命名iPhone拍摄的照片-按照拍摄时间重命名

bash 通过添加数字批量重命名文件

用Java批量重命名文件

如何给文件批量重命名?