欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

将文件夹下的所有文件递归遍历复制到指定文件夹下

程序员文章站 2022-06-04 08:11:36
...

把一个文件夹下所有的文件(包括子文件夹下的文件)全部复制到一个文件夹中(不包括原文件夹目录结构,就是把原文件夹及原文件夹子文件夹的所有的文件复制放到一个文件夹中)

/**
 * @author lyx
 * @date 2021/12/15 10:53
 * Description:
 */
public class DirCopy {
    public static void main(String[] args) throws FileNotFoundException {
        String from = "F:\\Pixiv\\图片";
        String to = "F:\\Pixiv\\out";
        fileCopy(from,to);
    }

    /**
     * 将源目录下所有文件(包括子目录下的文件)复制到指定目录
     * @param from 源目录地址
     * @param to 输出目录地址(目录不存在会自动创建)
     */
    public static void fileCopy(String from,String to){
        try  {
            Path pathTo = Paths.get(to);
            if (!Files.exists(pathTo)){
                Files.createDirectories(pathTo);
            }
            Files.walkFileTree(Paths.get(from),new SimpleFileVisitor<Path>(){
                @Override
                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                    FileChannel fromChannel = new RandomAccessFile(file.toFile(), "rw").getChannel();
                    FileChannel toChannel = new RandomAccessFile(to+File.separator+file.toFile().getName(), "rw").getChannel();
                    long size = fromChannel.size();
                    //size:总长度 left:剩余长度
                    for (long left = size;left > 0;){
                        left -= fromChannel.transferTo(size-left,left,toChannel);
                    }
                    fromChannel.close();
                    toChannel.close();
                    return super.visitFile(file, attrs);
                }
            });
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}
相关标签: Java java