I/O流的类和创建对象的方式

本文详细介绍了Java中的Path、Paths和Files类,包括如何创建Path对象,Path类的主要方法,Files类提供的文件操作,如判断文件可写、是否存在,创建、删除文件,以及遍历目录和生成字节流等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Path类和Paths类

Path用来表示文件路径和目录路径,用来获取文件本身的一些信息,例如文件所在的目录,文件的长度,文件读写权限等。

创建Path对象

  1. 通过Paths类创建Path对象
    1. Paths类用于通过一个路径字符串来构造Path对象。 

    Path p1 = Paths.get("D:/work/", "javakc63.txt");
    Path p2 = Paths.get("D:/work/javakc63.txt");

2.通过File对象转换为Path对象

1.File类是jdk7之前的文件类,jdk7之后就被Path类代替

    File f = new File("D:/work/javakc63.txt");
	Path p4 = f.toPath();

Path类的方法

  • 名称
    • public Path getFliceName();
      • 返回此路径对象表示的文件或目录的名称。
  • 路径
    • public int getNameCount();
      • 返回路径中的文件名称的数目
    • public Path getName(int index)
      • 返回路径中指定位置的文件名称
    • public Path getParent()
      • 返回此路径的父路径,如果该路径没有父路径,则返回null
    • public Path getRoot()
      • 返回此路径的跟路径,如果该路径没有跟路径,则返回null
    • public boolean isAbsolute()
      • 如果此路径是绝对路径,则返回true,否则返回false
  • 新路径
    • public Path toAbdolutePath()
      • 返回此路径的绝对路径
    • public Path resolve(String path)
      • 在此路径下将给定的路径字符串转换为新路径
    • public Path resolveSibling(String path)
      • 在此路径的父路径下给定的路径字符串转换为新路径
    • public Path relativze(Path other)
      • 根据当前路径和给定的路径,构造两个路径之间的相对路径

Files类

这个类完全由操作文件、目录或其他类型文件的讲台方法组成。

在大多数情况下,这里定义的方法将委托相关的文件系统提供程序来执行文件。

Files类的方法1

  • public static boolean isWeitable(Path path)
    • 判断是否可被写入
  • public static boolean exists(Path path)
    • 判断文件是否在
  • public static Path createFile(Path path,FileAttribute<?>... attrs)
    • 创建一个新的空文件,如果文件已存在,则抛出异常
  • public static boolean isSameFile(Path p1,Path p2)
    • 判断两个文件是否是同一个文件(要求:参数文件必须存在,否则报文件找不到异常)
  • public static long size(Path path)
    • 获取文件的长度(不是目录的长度),单位是字节
  • pubic static boolean isDirectory(Path path)
    • 测试文件是否为目录
  • public static Path createDirectory(Path dir,FlieAttribute<?>... attrs)
    • 创建一个新的目录
  • public static Path createDirectries(Path dir,FileAttribute<?>... attrs)
    • 可以先创建不存在的父目录
  • public void delete(Path path)
    • 删除文件,如果文件不存在,抛出异常
  • public boolean deleteIfExists()
    • 删除文件(如果存在),如果文件不存在,什么也不做

遍历子文件

  • public static Stream<Path> list(Path dir)
    • 返回一个stream流,其元素是目录中的条目
  • public static DirectoryStream(Path) newDirectoryStream(Path dir)
    • 打开目录,返回一个newDirectoryStream遍历目录中的所有条目
  • public static DirectoryStream<Path> newDirectoryStream(Path dir,DirectoryStream.Filter<? super Path> filter))

    • 通过Fliter接口过滤子文件

遍历目录树

  • public static Stream<Path> walk(Path start,FileVisitOption... options)
    • 访问目录树
  • public static Stream<Path> find(Path start,int maxDepth,BiPredicate<Path,BasicFileAttributes> matcher,FileVisitOption... options)

    • 通过在给定的起始文件中,搜索文件树中的文件,返回一个被路径填充的流。参数FileVisitOption表示符号链接文件这个参数一般不用

  • public static Path walkFileTree(Path start,FileVisitor<? super Path> visitor)

    • 访问目录树

Flies类的方法2

生成字节流

  • public static InputStream newInputStream(Path path,OpenOption...options)

    • 打开一个文件,返回一个输入流以从文件中读取的文件

    • StandardOpenOption 提供了以下的枚举常量: ​​​​​​​

      枚举常量

      描述

      READ

      打开文件进行读取访问

      WRITE

      打开文件进行写出访问

      CREATE

      如果文件不存在则创建新文件

      CREATE_NEW

      创建新文件,如果文件已存在,则抛出异常

      APPPEND

      在文件末尾添加数据(与 WRITE 和 CREATE 结合使用)

      DELETE_ON_CLOSE

      当流关闭的时候删除文件(用于删除临时文件)

      TRUNCATE_EXISTING

      将文件截断为 0 个字节(与 WRITE 结合使用)

      SPARSE

      新创建的文件是 Sparse 文件

      SYNC

      保持文件内容和元数据同步

      DSYNC

      保持文件内容异步

  • public static OutputStream newOutputStream(Path path, OpenOption... options)
    • 打开或创建一个文件,返回一个输出流,该字节流可用于写入文件的字节。
  • 读取字节数组
    • ​​​​​​​public static byte[] readAllBytes(Path path)
      • 从文件中读取所有字节

  • 读取字符串

    • public static String readString(Path path)

      • 从文件中读取字符串。

    • public static String readString(Path path, Charset cs)

      • 使用指定的字符集,从文件中读取字符串。

      • 常用的获得Charset对象的方法有两种:

        • 第一种:StandardCharsets.UTF_8

        • 第二种:Charset.forName("gbk")

    • public static List<String> readAllLines(Path path)

      • 从文件中读取所有行。

    • public static List<String> readAllLines(Path path,Charset cs)

      • 使用指定的字符集,从文件中读取所有行。

  • 写入字节数组

    • public static Path write(Path path,byte[] bytes, OpenOption...options)

      • 将字节写入文件

  • 写入字符串

    • public static Path writeString(Path path,CharSequence csq, OpenOption... options)

      • 将文本行写入文件

    • public static Path writeString(Path path,CharSequence csq, Charset cs,OpenOption... options)

      • 将文本行写入文件

    • public static Path write(Path path,

                               Iterable<? extends CharSequence> lines,

                               OpenOption... options)

      • 将文本行写入文件

    • public static Path write(Path path,

                               Iterable<? extends CharSequence> lines,

                               Charset cs,

                               OpenOption... options)

      • 以指定的字符集,将文本行写入文件

  • 文本复制

    • ·public static Path move(Path source, Path target,CopyOption... options)

      • 将文件移动或重命名为目标文件

    • public static Path copy(Path source,Path target,CopyOption... options)

      • 将文件复制到目标文件

    • public static long copy(Path source, OutputStream out)

      • 将文件中的所有字节复制到流输出

    • public static long copy(InputStream in,

                              Path target,

                              CopyOption... options)

      • 将所有字节从输入流复制到文件中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值