• Path,Files巩固,题目:从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中


      这个题目用传统的File,InputStream可以做,但是如果用Files,Path类做,虽然思路上会困难一些,但是代码简洁了很多,以下是代码:

    import java.io.IOException;
    import java.nio.file.FileVisitResult;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.SimpleFileVisitor;
    import java.nio.file.attribute.BasicFileAttributes;
    import java.util.Scanner;
    
    //从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
    public class Demo1 {
        public static void main(String[] args) throws IOException {
            Path path1=getPath();    //获取源文件夹路径
            Path path2=getPath();   //获取目的文件夹路径
            Path path=path1.getFileName();    //获取源文件的最后一个文件名
            path2=path2.resolve(path);     //在目的文件中建立文件夹存储源文件的内容
            copy(path1,path2); 
        }
    
        public static void copy(Path path1, Path path2) throws IOException {
            Files.walkFileTree(path1, new SimpleFileVisitor<Path>() {
                //在访问文件夹前执行的操作
                @Override
                public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
                    Path p1=path1.relativize(dir);   //获取文件夹相对路径
                    Path p2=path2.resolve(p1);    //在目的文件夹中建立路径
                    Files.createDirectories(p2);   //建立文件夹.
                    return FileVisitResult.CONTINUE;    //继续访问.
                }
    
                @Override
                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                    Path p1=path1.relativize(file);     //获取文件相对于源文件的相对路径
                    Path p2=path2.resolve(p1);      //获取文件在目的文件中的路径位置
                    Files.copy(file, p2);         //利用Files类的copy功能复制文件
                    return FileVisitResult.CONTINUE;     //继续访问.
                }
    
                @Override
                public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
                    return FileVisitResult.CONTINUE;     //访问失败,继续访问.
                }
                 
            });
        }
    
        public static Path getPath() {
            System.out.println("请输入一个文件夹!");
            String str=null;
            Scanner sc=new Scanner(System.in);
            str=sc.nextLine();
            Path path=Paths.get(str);        //获取路径
            if(!Files.exists(path)) {
                System.out.println("请输入一个存在的文件夹");
                getPath();
            }
            if(Files.isRegularFile(path)) {
                System.out.println("请输入文件!");
                getPath();
            }
            return path;
        }
    }
  • 相关阅读:
    pycharm基本设置
    pycharm破解
    jupyter
    gpu监控收藏
    监控收藏
    k8s 亲和性和反亲和性 以及污点和容忍
    通过服务器 远程管理卡进行装机
    7.11实习培训日志-Git Linux
    ## HashTable和HashMap的区别
    springboot2 -广播式WebSocket
  • 原文地址:https://www.cnblogs.com/hlhdidi/p/5634914.html
Copyright © 2020-2023  润新知