0
点赞
收藏
分享

微信扫一扫

java 文件移动

帮助用户获取文件夹中的文件名,并将指定的文件从一个文件夹移动到另一个文件夹。

package cn.wenjianqianyi;

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.HashSet;
import java.util.Set;

public class FileComparison {

    public static void main(String[] args) {
        // 定义三个文件夹路径
        String folder1Path = "D:\\test\\test1";
        String folder2Path = "D:\\test\\test2";
        String folder3Path = "D:\\test\\test3";

        // 获取文件夹1和文件夹2中的文件名
        Set<String> filesInFolder1 = getFileNames(folder1Path);
        Set<String> filesInFolder2 = getFileNames(folder2Path);

        // 找出文件夹1中独有的文件
        Set<String> uniqueFilesInFolder1 = new HashSet<>(filesInFolder1);
        uniqueFilesInFolder1.removeAll(filesInFolder2);

        // 找出文件夹2中独有的文件
        Set<String> uniqueFilesInFolder2 = new HashSet<>(filesInFolder2);
        uniqueFilesInFolder2.removeAll(filesInFolder1);

        // 将独有文件剪切到文件夹3
        moveFiles(uniqueFilesInFolder1, folder1Path, folder3Path);
        moveFiles(uniqueFilesInFolder2, folder2Path, folder3Path);

        System.out.println("文件剪切完成。");
    }

    private static Set<String> getFileNames(String folderPath) {
        Set<String> fileNames = new HashSet<>();
        //创建一个 File 对象 folder,表示传入的文件夹路径
        File folder = new File(folderPath);
        //调用 folder.listFiles() 方法获取文件夹中的所有文件和子文件夹,返回一个 File 数组
        File[] files = folder.listFiles();
        //检查 files 是否为 null,如果不为 null,则遍历 files 数组
		//对于每个 File 对象 file,检查它是否是一个文件(file.isFile())
		//如果是文件,则将其文件名(file.getName())添加到 fileNames 集合中
        if (files != null) {
            for (File file : files) {
                if (file.isFile()) {
                    fileNames.add(file.getName());
                }
            }
        }
        return fileNames;
    }

    private static void moveFiles(Set<String> fileNames, String sourceFolderPath, String targetFolderPath) {
        for (String fileName : fileNames) {
        	//使用 Paths.get 方法创建源文件路径 sourcePath 和目标文件路径 targetPath
            Path sourcePath = Paths.get(sourceFolderPath, fileName);
            Path targetPath = Paths.get(targetFolderPath, fileName);
            try {
            //尝试使用 Files.move 方法将文件从源路径移动到目标路径
                Files.move(sourcePath, targetPath);
            } catch (IOException e) {
            //如果移动过程中发生 IOException,则捕获异常并打印堆栈跟踪
                e.printStackTrace();
            }
        }
    }
}


举报

相关推荐

0 条评论