Path类和Paths类
Path用来表示文件路径和目录路径,用来获取文件本身的一些信息,例如文件所在的目录,文件的长度,文件读写权限等。
创建Path对象
- 通过Paths类创建Path对象
- 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 Path getFliceName();
- 路径
- public int getNameCount();
- 返回路径中的文件名称的数目
- public Path getName(int index)
- 返回路径中指定位置的文件名称
- public Path getParent()
- 返回此路径的父路径,如果该路径没有父路径,则返回null
- public Path getRoot()
- 返回此路径的跟路径,如果该路径没有跟路径,则返回null
- public boolean isAbsolute()
- 如果此路径是绝对路径,则返回true,否则返回false
- public int getNameCount();
- 新路径
- public Path toAbdolutePath()
- 返回此路径的绝对路径
- public Path resolve(String path)
- 在此路径下将给定的路径字符串转换为新路径
- public Path resolveSibling(String path)
- 在此路径的父路径下给定的路径字符串转换为新路径
- public Path relativze(Path other)
- 根据当前路径和给定的路径,构造两个路径之间的相对路径
- public Path toAbdolutePath()
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 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)
-
将所有字节从输入流复制到文件中
-
-