基础 | NIO - [Files & Path & Charset]

§1 Path

概述

  • 表示文件在文件系统中的路径
  • 可以指向文件或目录
  • 可以是绝对路径,也可以是相对路径
  • 通常 Path 可以替代 File

方法
获取
get()

Paths.get(absolute);
Paths.get(base,relative);

标准化
normalize()

  • 用于生成标准路径
  • 会将路径中的 /./.. 按从左到右的顺序结合清除
/home/./a/b -> /home/a/b
/home/../a/b -> /a/b

遍历文件树
walkFileTree()

  • 通过 FileVisitor 接口实现
  • 遍历的过程中会调用 FileVisitor 接口中实现的每个方法
    • preVisitDirectory 访问路径前
    • postVisitDirectory 访问路径后
    • visitFile 访问文件
    • visitFileFailed 访问文件失败
  • 可以扩展 SimpleFileVisitor ,是是配置器模式,里面包含所有默认实现
  • FileVisitor 所有方法都返回 FileVisitResult 枚举
    • FileVisitResult.CONTINUE 继续
    • FileVisitResult.TERMINATE 终止
    • FileVisitResult.SKIP_SIBLING 跳过兄弟
    • FileVisitResult.SKIP_SUBTREE 跳过子孙
/home/./a/b -> /home/a/b
/home/../a/b -> /a/b

§2 Files

概述

  • 文件、目录操作工具类

常用方法
创建目录
Files.createDirectory()

  • 目录已经存在时,抛出 FileAlreadyExistsException
  • 父目录不存在等其他问题,抛出 IOException
Files.createDirectory(Paths.get(directoryPath));

复制文件
Files.copy()

  • 目的目录下文件已经存在时,抛出 FileAlreadyExistsException
  • 目的目录不存在等其他问题,抛出 IOException
  • 可以通过 options 参数,使复制时覆盖存在文件
Files.copy(Paths.get(source), Paths.get(dest));
Files.copy(Paths.get(source), Paths.get(dest), options);

移动文件
Files.move()

  • 可以通过此方法实现文件重命名
  • 移动失败时,抛出 IOException
Files.move(Paths.get(source), Paths.get(dest));

删除文件
Files.delete()

  • 可以通过此方法实现文件重命名
  • 删除失败时,比如不存在,抛出 IOException
public void tree(String root){
    try {
        Files.walkFileTree(Paths.get(root),new SimpleFileVisitor<Path>(){
            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                System.out.println(file.toRealPath());
                return super.visitFile(file, attrs);
            }
        });
    } catch (IOException e) {
        e.printStackTrace();
    }
}

§3 Charset

概述

  • 字符集

常用方法
通过名字创建
forName

获取名字
forName

获取系统支持的所有字符集
availableCharset()

字符集是否被支持
isSupported()

获取虚拟机默认字符集
defaultCharset()

获取编码器
newEncoder()

获取解码器
newecoer]()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值