【Java小工具】(一)——批量移动文件

使用场景:

机缘巧合:对文件夹整理

有次对桌面上的文件进行分类整理的时候,发现有很多的东西只需要根据文件的后缀名去进行分类,并将他们移动到特定的文件夹当中,对于比较懒的我来说自然是想找个法子来偷懒的,刚好对于学过Java的人来说,简单的做几个File的操作就可以将文件移动了。


关键API

File
exists()、list()、mkdirs()、delete()、renameTo()

  • exists:用来判断该路径下文件或目录是否存在,返回值为boolean
  • list:用来返回该路径下目录下的所有文件,返回值为String[]字符串数组
  • mkdirs:创建一个目录,不管该路径下目录的父级是否存在,返回值为boolean
  • renameTo:用来重命名该路径下的文件或目录,在本次工具中起到了移动的作用,返回值boolean
  • delete:删除该路径下的文件或目录

逻辑分析:

提示:这里主要是对整个程序的一个逻辑分析:

  1. 首先我们先需要定义好需要整理的文件夹以及移动后的目标文件夹和文件后缀名
String oldPath = "C:\\send";
String newPath = "C:\\receive";
File oldFile = new File(oldPath);
File newFile = new File(newPath);
//需要移动文件的后缀
String suffix = ".xml";
  1. 对定义的需要整理的文件夹进行判断是否存在,如果存在则进行后续操作,不存在就结束了。当然需要移动到的目标路径方面也要做一点操作
if (oldFile.exists()) {
     //如果目的路径不存在,就创建一个
     if (!newFile.exists()) {
         newFile.mkdirs();
     }
     //……
}else {
	//没找到旧路径的操作
}
  1. 获取整个文件夹下的所有文件,通过返回得到的数组进行文件名的遍历,通过比对后缀名然后进行文件的移动
//oldFiles数组存放的是源文件夹中所有的文件名称
            //newFiles数组放的是目标文件所有文件的名称
            String[] oldFiles = oldFile.list();
            String[] newFiles = newFile.list();
            //用于记录移动了多少个文件
            int count = 0;
            for (int i = 0; i < oldFiles.length; i++) {
                int foot = oldFiles[i].length();
                int front = foot - suffix.length();
                if (front > 0) {
                    //筛选满足文件后缀名的文件
                    if (suffix.equals(oldFiles[i].substring(front, foot))) {

                        for (int j = 0; j < newFiles.length; j++) {
                            if (oldFiles[i].equals(newFiles[j]))
                                System.out.println(newPath + newFiles[j] + "已更新:" + new File(newPath + "\\" + newFiles[j]).delete());
                        }
                        new File(oldPath + "\\" + oldFiles[i]).renameTo(new File(newPath + "\\" + oldFiles[i]));
                        count++;
                    }
                }
            }
            System.out.println("文件移动成功\n" + oldPath + "目录下的" + suffix + "文件已经移动到了" + newPath + "\n一共转移文件" + count + "个");

完整代码:

提示:该部分为整个方法的完整代码:

public static void moveFile() {
		//文件旧路径
        String oldPath = "C:\\send";
        //文件目标路径
        String newPath = "C:\\receive";
        File oldFile = new File(oldPath);
        File newFile = new File(newPath);
        //需要移动文件的后缀
        String suffix = ".xml";
        if (oldFile.exists()) {
            //如果目标路径不存在,就创建一个
            if (!newFile.exists()) {
                newFile.mkdirs();
            }
            //oldFiles数组存放的是源文件夹中所有的文件名称
            //newFiles数组放的是目标文件所有文件的名称
            String[] oldFiles = oldFile.list();
            String[] newFiles = newFile.list();
            //用于记录移动了多少个文件
            int count = 0;
            for (int i = 0; i < oldFiles.length; i++) {
                int foot = oldFiles[i].length();
                int front = foot - suffix.length();
                if (front > 0) {
                    //筛选满足文件后缀名的文件
                    if (suffix.equals(oldFiles[i].substring(front, foot))) {

                        for (int j = 0; j < newFiles.length; j++) {
                            if (oldFiles[i].equals(newFiles[j]))
                                System.out.println(newPath + newFiles[j] + "已更新:" + new File(newPath + "\\" + newFiles[j]).delete());
                        }
                        new File(oldPath + "\\" + oldFiles[i]).renameTo(new File(newPath + "\\" + oldFiles[i]));
                        count++;
                    }
                }
            }
            System.out.println("文件移动成功\n" + oldPath + "目录下的" + suffix + "文件已经移动到了" + newPath + "\n一共转移文件" + count + "个");
        } else {
            System.out.println("文件移动失败,初始路径不存在");
        }


    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值