Netty——Path和Files类中方法说明与代码示例

x33g5p2x  于2022-08-17 转载在 其他  
字(5.1k)|赞(0)|评价(0)|浏览(260)

一、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();
        }
    }
}
  • 输出结果

相关文章