Java处理IO的现代方式

2019-01-24  本文已影响2人  王小杰at2019

介绍

Java 7 引入了全新的 I/O API(一般称为 NIO.2),几乎可以完全取代以前使用 File 类处理
I/O 的方式
。新添加的各个类都在 java.nio.file 包中。
很多情况下,使用 Java 7 引入的新 API 处理 I/O 更简单。新 API 分为两大部分:第一部分
是一个新抽象,Path 接口(这个接口的作用可以理解为表示文件的位置,这个位置可以有
内容,也可以没有);第二部分是很多处理文件和文件系统的新方法,方便且实用。
新方法都是 Files 类的静态方法。

部分功能实例

   //文件拷贝
        Files.copy(Paths.get("C:\\Users\\WangYa\\Desktop\\面试\\13284254-6f518e7f218adb11.png"), Paths.get("d:\\test.png"), StandardCopyOption.REPLACE_EXISTING);
        //文件属性
        Map<String, Object> attributes = Files.readAttributes(Paths.get("C:\\Users\\WangYa\\Desktop\\面试\\13284254-6f518e7f218adb11.png"), "*");
        log.info("attributes:{}", JSON.toJSON(attributes));
        //列出路径
        Files.list(Paths.get("d:\\")).forEach(path -> {
            log.info("path:{}", path);
        });

        //递归列出木目录
        Files.walk(Paths.get("D:\\KuGou"), FileVisitOption.FOLLOW_LINKS).forEach(
                path -> {
                    log.info(path.toString());
                }
        );

        //递归限定深度
        Files.walk(Paths.get("D:\\Program Files"), 1, FileVisitOption.FOLLOW_LINKS).forEach(
                path -> {
                    log.info(path.toString());
                }
        );


        // 存储器空间
        FileStore fileStore = Files.getFileStore(Paths.get("D:"));
        log.info("fileStore :{}", JSON.toJSON(fileStore));


        //读取一个文本文件
        byte[] bytes = Files.readAllBytes(Paths.get("C:\\Users\\WangYa\\Desktop\\build\\api.sh"));
        log.info("content:{}", new String(bytes, "utf-8"));

        UserPrincipal owner = Files.getOwner(Paths.get("C:\\Users\\WangYa\\Desktop\\build\\api.sh"));
        log.info("owner:{}", owner.getName());

一个简单的文件下载操作,非常简单,不用任何第三方包

  URL url = new URL("http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.14/bin/apache-tomcat-9.0.14.tar.gz");
        Files.copy( url.openConnection().getInputStream(),Paths.get("D://apache-tomcat-9.0.14.tar.gz"));
上一篇下一篇

猜你喜欢

热点阅读