首页  

特定类型文件复制功能 java实现     所属分类 java 浏览量 595
从指定目录 复制指定类型的文件 到 指定的目录
譬如只复制 .md .png 文件



package dyyx.tool;

import java.io.File;
import java.io.FileFilter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

// 复制指定类型的文件
public class CopyFiles {
    
    private static final Set<String> TYPES = new HashSet<>();
    private static final FileFilter filter = new MyFileFilter();

    static {
        TYPES.add(".png");
        TYPES.add(".md");
    }

    public static void main(String[] args) throws Exception {
        List<File> files = new ArrayList<>();
        String src = "/Users/dugang/fatework/FATE";
        File srcFile = new File(src);
        listFiles(srcFile, files);

        String destDir = "/Users/dugang/tmp/fate1.8docs";
        for (File file : files) {
            String fullpathSrc = file.getAbsolutePath();
            String shortpathSrc = fullpathSrc.substring(src.length());
            // /Users/dugang/fatework/FATE/fateflow/doc/fate_flow_http_api.md
            // /fateflow/doc/fate_flow_http_api.md
            // System.out.println(fullpathSrc);
            // System.out.println(shortpathSrc);
            String fullpathDest = destDir + shortpathSrc;
            copy(fullpathSrc, fullpathDest);
        }
        System.out.println("copy done,files count " + files.size());
        System.out.println("src=" + src);
        System.out.println("dest=" + destDir);
    }

    private static void copy(String src, String dest) throws Exception {
        mkdirs(dest);
        Path srcPath = Paths.get(src);
        Path destPath = Paths.get(dest);
        Files.copy(srcPath, destPath);
    }

    private static void mkdirs(String file) {
        File f = new File(file);
        if (f.exists()) {
            return;
        }
        File pf = f.getParentFile();
        if (pf.exists()) {
            return;
        }
        pf.mkdirs();
    }

    public static void listFiles(File dir, List<File> files) {
        if (!dir.isDirectory()) {
            return;
        }
        File[] childFiles = dir.listFiles(filter);
        if (childFiles == null || childFiles.length <= 0) {
            return;
        }

        for (File file : childFiles) {
            if (file.isDirectory()) {
                listFiles(file, files);
            } else {
                files.add(file);
            }
        }
    }

    private static class MyFileFilter implements FileFilter {
        public boolean accept(File pathname) {
            if (pathname.isDirectory()) {
                return true;
            }
            if (pathname.getAbsolutePath().contains(".github")) {
                return false;
            }
            for (String item : TYPES) {
                if (pathname.getName().toLowerCase().endsWith(item)) {
                    return true;
                }
            }
            return false;
        }
    }
}




https://gitee.com/dyyx/hellocode/blob/master/src/dyyx/tool/CopyFiles.java

上一篇     下一篇
Python pip 安装

python pip 配置国内镜像

Docker三剑客

Python3中的 pyi 文件

联邦学习框架FATE简介

Python3虚拟环境venv