您当前的位置: 首页 > 

小志的博客

暂无认证

  • 0浏览

    0关注

    1217博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Netty——文件编程(Path和Files类中方法说明与代码示例)

小志的博客 发布时间:2022-07-26 22:10:42 ,浏览量:0

目录
    • 一、Path类
      • 1.1、Path类的概述
      • 1.2、Path类的代码示例
    • 二、Files类
      • 2.1、 检查文件是否存在代码示例
      • 2.2、 创建一级目录代码示例
      • 2.3、 创建多级目录代码示例
      • 2.4、 拷贝文件代码示例
      • 2.5、 拷贝文件(覆盖掉被拷贝文件中的内容)代码示例
      • 2.6、 移动文件代码示例
      • 2.7、 删除文件代码示例
      • 2.8、 删除目录代码示例

一、Path类 1.1、Path类的概述
  • jdk7 引入了 Path 和 Paths 类
  • Path 用来表示文件路径。
  • Paths 是工具类,用来获取 Path 实例。
1.2、Path类的代码示例
  • 相对路径 使用 user.dir 环境变量来定位 1.txt

    Path source = Paths.get("1.txt"); // 相对路径 使用 user.dir 环境变量来定位 1.txt
    
  • 绝对路径 代表了 d:\1.txt

    Path source = Paths.get("d:\\1.txt");
    
  • 绝对路径 同样代表了 d:\1.txt

    Path source = Paths.get("d:/1.txt"); 
    
  • 代表了 d:\data\projects

    Path projects = Paths.get("d:\\data", "projects");
    
  • .代表了当前路径; . .代表了上一级路径

    Path path = Paths.get("d:\\data\\projects\\a\\..\\b");
    System.out.println(path);
    System.out.println(path.normalize()); // 正常化路径
    
    //输出结果
    d:\data\projects\a\..\b
    d:\data\projects\
    
二、Files类 2.1、 检查文件是否存在代码示例
  • 代码示例

    package com.example.nettytest.nio.day2;
    
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.StandardCopyOption;
    
    /**
     * @description:
     * @author: xz
     * @create: 2022-07-26 21:50
     */
    public class TestFile {
        public static void main(String[] args) {
            checkFileExists();
        }
        /**
         * 检查文件是否存在
         * */
        public static void checkFileExists(){
            Path path = Paths.get("file/1.txt");
            boolean exists = Files.exists(path);
            System.out.println("文件是否存在:"+exists);
        }
    }
    
  • 输出结果 在这里插入图片描述

2.2、 创建一级目录代码示例
  • 代码示例

    package com.example.nettytest.nio.day2;
    
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.StandardCopyOption;
    
    /**
     * @description:
     * @author: xz
     * @create: 2022-07-26 21:50
     */
    public class TestFile {
        public static void main(String[] args) {
            createDirect();
        }
       /**
         * 创建一级目录
         *      如果目录已存在,会抛异常 FileAlreadyExistsException
         *      不能一次创建多级目录,否则会抛异常 NoSuchFileException
         * */
        public static void createDirect(){
            Path path = Paths.get("file/d1");
            try {
                Files.createDirectory(path);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
  • 输出结果 在这里插入图片描述

2.3、 创建多级目录代码示例
  • 代码示例

    package com.example.nettytest.nio.day2;
    
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.StandardCopyOption;
    
    /**
     * @description:
     * @author: xz
     * @create: 2022-07-26 21:50
     */
    public class TestFile {
        public static void main(String[] args) {
            createMoreDirect();
        }
        /**
         * 创建多级目录
         * */
        public static void createMoreDirect(){
            Path path = Paths.get("file/d2/d3");
            try {
                Files.createDirectories(path);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
  • 输出结果 在这里插入图片描述

2.4、 拷贝文件代码示例
  • copy1.txt文件中内容如下: 在这里插入图片描述

  • 代码示例

    package com.example.nettytest.nio.day2;
    
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.StandardCopyOption;
    
    /**
     * @description:
     * @author: xz
     * @create: 2022-07-26 21:50
     */
    public class TestFile {
        public static void main(String[] args) {
            copyFile();
        }
        /**
         * 拷贝文件
         * 如果文件已存在,会抛异常 FileAlreadyExistsException
         * */
        public static void copyFile(){
            Path source = Paths.get("file/copy1.txt");
            Path target = Paths.get("file/copy2.txt");
            try {
                Files.copy(source, target);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
  • 输出结果 在这里插入图片描述

2.5、 拷贝文件(覆盖掉被拷贝文件中的内容)代码示例
  • 修改copy1.txt文件中内容如下:

    在这里插入图片描述

  • 代码示例

    package com.example.nettytest.nio.day2;
    
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.StandardCopyOption;
    
    /**
     * @description:
     * @author: xz
     * @create: 2022-07-26 21:50
     */
    public class TestFile {
        public static void main(String[] args) {
            copyFile2();
        }
        /**
         * 拷贝文件
         * 如果文件已存在,会抛异常 FileAlreadyExistsException
         * 如果希望用 source 覆盖掉 target文件中的内容,需要用 StandardCopyOption 来控制
         * */
        public static void copyFile2(){
            Path source = Paths.get("file/copy1.txt");
            Path target = Paths.get("file/copy2.txt");
            try {
                Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
  • 输出结果 在这里插入图片描述

2.6、 移动文件代码示例
  • 代码示例

    package com.example.nettytest.nio.day2;
    
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.StandardCopyOption;
    
    /**
     * @description:
     * @author: xz
     * @create: 2022-07-26 21:50
     */
    public class TestFile {
        public static void main(String[] args) {
            moveFile();
        }
           /**
         * 移动文件
         * StandardCopyOption.ATOMIC_MOVE 保证文件移动的原子性
         * */
        public static void moveFile(){
            Path source = Paths.get("file/copy1.txt");
            Path target = Paths.get("file/d1/copy1.txt");
            try {
                Files.move(source, target, StandardCopyOption.ATOMIC_MOVE);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
  • 输出结果 在这里插入图片描述

2.7、 删除文件代码示例
  • 代码示例

    package com.example.nettytest.nio.day2;
    
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.StandardCopyOption;
    
    /**
     * @description:
     * @author: xz
     * @create: 2022-07-26 21:50
     */
    public class TestFile {
        public static void main(String[] args) {
            deleteFile();
        }
         /**
         * 删除文件
         * 如果文件不存在,会抛异常 NoSuchFileException
         * */
        public static void deleteFile(){
            Path target = Paths.get("file/d1/copy1.txt");
            try {
                Files.delete(target);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
  • 输出结果 在这里插入图片描述

2.8、 删除目录代码示例
  • 代码示例

    package com.example.nettytest.nio.day2;
    
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.StandardCopyOption;
    
    /**
     * @description:
     * @author: xz
     * @create: 2022-07-26 21:50
     */
    public class TestFile {
        public static void main(String[] args) {
            deleteDirectory();
        }
        /**
         * 删除目录
         * 如果目录还有内容,会抛异常 DirectoryNotEmptyException
         * */
        public static void deleteDirectory(){
            Path target = Paths.get("file/d2/d3");
            try {
                Files.delete(target);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
  • 输出结果 在这里插入图片描述

关注
打赏
1661269038
查看更多评论
立即登录/注册

微信扫码登录

0.0476s