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

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

一、Path类

1.1、Path类的概述

  • jdk7 引入了 Path 和 Paths 类
  • Path 用来表示文件路径。
  • Paths 是工具类,用来获取 Path 实例。

1.2、Path类的代码示例

  • 相对路径 使用 user.dir 环境变量来定位 1.txt
  1. Path source = Paths.get("1.txt"); // 相对路径 使用 user.dir 环境变量来定位 1.txt
  • 绝对路径 代表了 d:\1.txt
  1. Path source = Paths.get("d:\\1.txt");
  • 绝对路径 同样代表了 d:\1.txt
  1. Path source = Paths.get("d:/1.txt");
  • 代表了 d:\data\projects
  1. Path projects = Paths.get("d:\\data", "projects");
  • ****.**代表了当前路径; **. .代表了上一级路径
  1. Path path = Paths.get("d:\\data\\projects\\a\\..\\b");
  2. System.out.println(path);
  3. System.out.println(path.normalize()); // 正常化路径
  1. //输出结果
  2. d:\data\projects\a\..\b
  3. d:\data\projects\

二、Files类

2.1、 检查文件是否存在代码示例

  • 代码示例
  1. package com.example.nettytest.nio.day2;
  2. import java.io.IOException;
  3. import java.nio.file.Files;
  4. import java.nio.file.Path;
  5. import java.nio.file.Paths;
  6. import java.nio.file.StandardCopyOption;
  7. /**
  8. * @description:
  9. * @author: xz
  10. * @create: 2022-07-26 21:50
  11. */
  12. public class TestFile {
  13. public static void main(String[] args) {
  14. checkFileExists();
  15. }
  16. /**
  17. * 检查文件是否存在
  18. * */
  19. public static void checkFileExists(){
  20. Path path = Paths.get("file/1.txt");
  21. boolean exists = Files.exists(path);
  22. System.out.println("文件是否存在:"+exists);
  23. }
  24. }
  • 输出结果

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

  • 代码示例
  1. package com.example.nettytest.nio.day2;
  2. import java.io.IOException;
  3. import java.nio.file.Files;
  4. import java.nio.file.Path;
  5. import java.nio.file.Paths;
  6. import java.nio.file.StandardCopyOption;
  7. /**
  8. * @description:
  9. * @author: xz
  10. * @create: 2022-07-26 21:50
  11. */
  12. public class TestFile {
  13. public static void main(String[] args) {
  14. createDirect();
  15. }
  16. /**
  17. * 创建一级目录
  18. * 如果目录已存在,会抛异常 FileAlreadyExistsException
  19. * 不能一次创建多级目录,否则会抛异常 NoSuchFileException
  20. * */
  21. public static void createDirect(){
  22. Path path = Paths.get("file/d1");
  23. try {
  24. Files.createDirectory(path);
  25. } catch (IOException e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. }
  • 输出结果

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

  • 代码示例
  1. package com.example.nettytest.nio.day2;
  2. import java.io.IOException;
  3. import java.nio.file.Files;
  4. import java.nio.file.Path;
  5. import java.nio.file.Paths;
  6. import java.nio.file.StandardCopyOption;
  7. /**
  8. * @description:
  9. * @author: xz
  10. * @create: 2022-07-26 21:50
  11. */
  12. public class TestFile {
  13. public static void main(String[] args) {
  14. createMoreDirect();
  15. }
  16. /**
  17. * 创建多级目录
  18. * */
  19. public static void createMoreDirect(){
  20. Path path = Paths.get("file/d2/d3");
  21. try {
  22. Files.createDirectories(path);
  23. } catch (IOException e) {
  24. e.printStackTrace();
  25. }
  26. }
  27. }
  • 输出结果

2.4、 拷贝文件代码示例

  • copy1.txt文件中内容如下:

  • 代码示例
  1. package com.example.nettytest.nio.day2;
  2. import java.io.IOException;
  3. import java.nio.file.Files;
  4. import java.nio.file.Path;
  5. import java.nio.file.Paths;
  6. import java.nio.file.StandardCopyOption;
  7. /**
  8. * @description:
  9. * @author: xz
  10. * @create: 2022-07-26 21:50
  11. */
  12. public class TestFile {
  13. public static void main(String[] args) {
  14. copyFile();
  15. }
  16. /**
  17. * 拷贝文件
  18. * 如果文件已存在,会抛异常 FileAlreadyExistsException
  19. * */
  20. public static void copyFile(){
  21. Path source = Paths.get("file/copy1.txt");
  22. Path target = Paths.get("file/copy2.txt");
  23. try {
  24. Files.copy(source, target);
  25. } catch (IOException e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. }
  • 输出结果

2.5、 拷贝文件(覆盖掉被拷贝文件中的内容)代码示例

  • 修改copy1.txt文件中内容如下:

  • 代码示例
  1. package com.example.nettytest.nio.day2;
  2. import java.io.IOException;
  3. import java.nio.file.Files;
  4. import java.nio.file.Path;
  5. import java.nio.file.Paths;
  6. import java.nio.file.StandardCopyOption;
  7. /**
  8. * @description:
  9. * @author: xz
  10. * @create: 2022-07-26 21:50
  11. */
  12. public class TestFile {
  13. public static void main(String[] args) {
  14. copyFile2();
  15. }
  16. /**
  17. * 拷贝文件
  18. * 如果文件已存在,会抛异常 FileAlreadyExistsException
  19. * 如果希望用 source 覆盖掉 target文件中的内容,需要用 StandardCopyOption 来控制
  20. * */
  21. public static void copyFile2(){
  22. Path source = Paths.get("file/copy1.txt");
  23. Path target = Paths.get("file/copy2.txt");
  24. try {
  25. Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
  26. } catch (IOException e) {
  27. e.printStackTrace();
  28. }
  29. }
  30. }
  • 输出结果

2.6、 移动文件代码示例

  • 代码示例
  1. package com.example.nettytest.nio.day2;
  2. import java.io.IOException;
  3. import java.nio.file.Files;
  4. import java.nio.file.Path;
  5. import java.nio.file.Paths;
  6. import java.nio.file.StandardCopyOption;
  7. /**
  8. * @description:
  9. * @author: xz
  10. * @create: 2022-07-26 21:50
  11. */
  12. public class TestFile {
  13. public static void main(String[] args) {
  14. moveFile();
  15. }
  16. /**
  17. * 移动文件
  18. * StandardCopyOption.ATOMIC_MOVE 保证文件移动的原子性
  19. * */
  20. public static void moveFile(){
  21. Path source = Paths.get("file/copy1.txt");
  22. Path target = Paths.get("file/d1/copy1.txt");
  23. try {
  24. Files.move(source, target, StandardCopyOption.ATOMIC_MOVE);
  25. } catch (IOException e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. }
  • 输出结果

2.7、 删除文件代码示例

  • 代码示例
  1. package com.example.nettytest.nio.day2;
  2. import java.io.IOException;
  3. import java.nio.file.Files;
  4. import java.nio.file.Path;
  5. import java.nio.file.Paths;
  6. import java.nio.file.StandardCopyOption;
  7. /**
  8. * @description:
  9. * @author: xz
  10. * @create: 2022-07-26 21:50
  11. */
  12. public class TestFile {
  13. public static void main(String[] args) {
  14. deleteFile();
  15. }
  16. /**
  17. * 删除文件
  18. * 如果文件不存在,会抛异常 NoSuchFileException
  19. * */
  20. public static void deleteFile(){
  21. Path target = Paths.get("file/d1/copy1.txt");
  22. try {
  23. Files.delete(target);
  24. } catch (IOException e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. }
  • 输出结果

2.8、 删除目录代码示例

  • 代码示例
  1. package com.example.nettytest.nio.day2;
  2. import java.io.IOException;
  3. import java.nio.file.Files;
  4. import java.nio.file.Path;
  5. import java.nio.file.Paths;
  6. import java.nio.file.StandardCopyOption;
  7. /**
  8. * @description:
  9. * @author: xz
  10. * @create: 2022-07-26 21:50
  11. */
  12. public class TestFile {
  13. public static void main(String[] args) {
  14. deleteDirectory();
  15. }
  16. /**
  17. * 删除目录
  18. * 如果目录还有内容,会抛异常 DirectoryNotEmptyException
  19. * */
  20. public static void deleteDirectory(){
  21. Path target = Paths.get("file/d2/d3");
  22. try {
  23. Files.delete(target);
  24. } catch (IOException e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. }
  • 输出结果

相关文章