【JAVA】将分散于多个文件夹的文件汇集于同一个文件

场景

话不多说,直接上图.
【JAVA】将分散于多个文件夹的文件汇集于同一个文件
不难看出,如果这是一个班级的同学所有文件夹,现在我需要将他们上传的视频作业汇集到一个文件夹里面,那我需要一个个点进去剪切,这很显然就很瓜皮。 这时候一串简单的代码就可以解决这个问题。

代码

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;

public class MoveFile {
    public static void main(String[] args) {
        //这里是你想放文件的位置,例如:String targetPath = "E:\\haha\\hasd";
        //这里这么写是为了后面做exe文件。
        String targetPath = new File(System.getProperty("user.dir"))
                + File.separator + "niubi";
        File targetDictionary = new File(targetPath);
        if (!targetDictionary.exists()) {
            boolean mkdirs = targetDictionary.mkdirs();
            if (!mkdirs) {
                System.out.println("创建新文件失败!");
            }
        }
        Path newPath = Paths.get(targetPath);
        List<String> list = loopReadFile(new File(System.getProperty("user.dir")));
        for (String oldString : list) {
            Path oldPath = Paths.get(oldString);
            try {
                Files.move(oldPath, newPath.resolve(oldPath.getFileName()), REPLACE_EXISTING);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 读取视频文件,统一放入一个文件夹
     */
    public static List<String> loopReadFile(File item) {
        List<String> backResult = new ArrayList<>();
        if (item.isDirectory()) {
            File[] files = item.listFiles();
            assert files != null;
            for (File f : files) {
                backResult.addAll(loopReadFile(f));
            }
        } else {
            if (item.getName().endsWith(".mp4") || item.getName().endsWith(".mkv")
                    || item.getName().endsWith(".TS") || item.getName().endsWith(".ts")
                    || item.getName().endsWith(".avi") || item.getName().endsWith(".rmvb")
                    || item.getName().endsWith(".wmv") || item.getName().endsWith(".MPEG")
                    || item.getName().endsWith(".mov") || item.getName().endsWith(".flv")) {
                backResult.add(item.getAbsolutePath());
            }
        }
        return backResult;
    }
}

如果你只是单纯的想要运行程序来移动文件夹,那么这样按照你的需求修改目标路径文件所在路径以及你想移动的文件类型之后直接运行程序就ok了。

但是为了移动个文件,我还得打开IDEA?有这时间我干啥不香?

所以接下来,将这个程序做成.exe文件,随用随点。

将jar制作成exe

PS:我的项目是maven项目,所以我打jar,只需如下命令

mvn clean package -DskipTests

命令运行完后,jar会出现在target下面。

开始做jar

需要用一个工具: exe4j
下载地址: 官网

安装好之后,注册码填一下吧,我找了几个,先存着:

用户名和公司名可随便填 
A-XVK258563F-1p4lv7mg7sav 
A-XVK209982F-1y0i3h4ywx2h1 

不能用就百度,肯定有能用的。

操作开始,不多BB ,直接上图

  1. 输入注册码完成之后:【JAVA】将分散于多个文件夹的文件汇集于同一个文件

  2. 第一步
    【JAVA】将分散于多个文件夹的文件汇集于同一个文件

  3. 第二步
    【JAVA】将分散于多个文件夹的文件汇集于同一个文件

  4. 第三步
    【JAVA】将分散于多个文件夹的文件汇集于同一个文件
    注意一下高级选项里面的32-bit or 64-bit ,你电脑是64位的需要把里面那个东西勾上,一般自动勾上的,注意一下,防止抽风。

  5. 第四步
    【JAVA】将分散于多个文件夹的文件汇集于同一个文件

这里也得注意,如果你在项目中使用了例如commons-lang之类的第三方jar,需要一起在这里引入哦。

  1. 第五步:这里就是填一下你的jre版本,我用的1.8
    【JAVA】将分散于多个文件夹的文件汇集于同一个文件
  2. 第六步
    一路 next ,完结。 然后去你前面填的地址,找到exe文件即可。
    双击运行,虽然啥也没有,但是你会看到 同目录下多出了 niubi文件夹,这就代表,该目录下所有文件夹内的视频文件都被移动到了niubi文件夹下。
    我的效果图就是最上面那张图。
上一篇:一起看懂Redis两种持久化方式的原理(下)


下一篇:LeetCode 884 Uncommon Words from Two Sentences 解题报告