//以当前路径作为Path对象
Path p = Paths.get(“.”);
//使用传入的字符串返回一个Path对象
Path p2 = Paths.get(“D”,”ReviewIO”,”URL”);
//对应的路径
System.out.println(“p对象的对应路径:” + p.toString());
System.out.println(“p2对象的对应路径:” + p2.toString());
//路径数量是以路径名的数量作为标准
System.out.println(“p路径数量:” + p.getNameCount());
System.out.println(“p2路径数量:” + p2.getNameCount());
//获取绝对路径
System.out.println(“p绝对路径:” + p.toAbsolutePath());
System.out.println(“p2绝对路径:” + p2.toAbsolutePath());
//获取父路径
System.out.println(“p父路径:” + p.getParent());
System.out.println(“p2父路径:” + p2.getParent());
//获取p2对象的文件名或者文件目录名
System.out.println(p2.getFileName());
//通过Path对象返回一个分隔符对象
Spliterator split = p2.spliterator();

Paths类获取文件或文件目录路径可以使用采用多个字符串形式,也可以使用Path.get(D:\ReviewIO\URL)这种形式。返回的Path对象完全可以代替File类用于文件IO操作。

Files类
Files完成文件复制的方法,方法很简单。
Path source = Paths.get(“F:”,”Java经典练习题.pdf”);
Path dest = Paths.get(“F:”,”files.txt”);
File f = new File(“F:\ok.pdf”);
f.createNewFile();//如果f对象对应路径不存在就创建一个。
System.out.println(“source对象的文件路径:” + source);
//复制文件
Files.copy(source, new FileOutputStream(f));

Files完成写入文件的方法
//写入内容到文件
ArrayList as = new ArrayList<>();
as.add(“A”);
as.add(“B”);
as.add(“C”);
Files.write(dest, as, Charset.forName(“GBK”));
实例说明:个人觉得用起来不怎么方便。方法参数很多,尤其是Iterable<? extends CharSequence>参数,Iterable是个顶级接口,实现类几乎都是集合类,并且限制了类型通配符上限是CharSequence,这意味着要使用泛型为字符类型的集合类作为数据写入指定文件中,很麻烦。
如果只是简单写入内容到文件中,建议使用重定向标准输出流,然后使用打印流写入,简单粗暴。
使用Files类读取文件内容就不介绍了,个人觉得除了文件复制比较简洁通用,其他两个方法个人认为使用IO流或者NIO流比较方便一点。剩下来会介绍一些Files类的方法。
public static void main(String[] args) throws IOException {
Path source = Paths.get(“F:”,”Java经典练习题.pdf”);
/** 返回值为boolean的操作方法样例 */
System.out.println(Files.isHidden(source));//文件是否隐藏
System.out.println(Files.isExecutable(source));//文件是否可执行
System.out.println(Files.isWritable(source));//文件是否可写
//获取Paths对象对应的文件路径的文件储存
FileStore f = Files.getFileStore(Paths.get(“F:”));
FileStore e = Files.getFileStore(Paths.get(“E:”));
System.out.println(“F盘的总大小” + f.getTotalSpace());
System.out.println(“F盘的可用大小” + f.getUsableSpace());
System.out.println(“F盘的未分配空间” + f.getUnallocatedSpace());

}

除了以上的方法之外,Files类还提供遍历文件和目录、监控文件变化、读取和设置文件权限、查看文件属性的方法,功能十分强大。

Path 与 Paths

java.nio.file.Path接口代表一个平台无关的平台路径,描述了目 录结构中文件的位置

Paths 提供的 get() 方法用来获取 Path 对象:

Path get(String first, String … more) : 用于将多个字符串串连成路径

Path 常用方法:

boolean endsWith(String path) : 判断是否以 path 路径结束

boolean startsWith(String path) :判断是否以 path 路径开始
boolean isAbsolute() : 判断是否是绝对路径

Path getFileName() : 返回与调用Path 对象关联的文件名
Path getName(int idx) : 返回的指定索引位置 idx 的路径名称

int getNameCount() : 返回 Path 根目录后面元素的数量
Path getParent() :返回 Path 对象包含整个路径,不包含 Path 对象指定的文件路径

Path getRoot() :返回调用 Path 对象的根路径

Path resolve(Path p) : 将相对路径解析为绝对路径

Path toAbsolutePath() : 作为绝对路径返回调用 Path 对象

String toString() : 返回调用 Path 对象的字符串表示形式

  1. Files 类

java.nio.file.Files 用于操作文件或目录的工具类。

Files 常用方法:

Path copy(Path src,Path dest, CopyOption … how) : 文件的复制
Path createDirectory(Path path,FileAttribute<?> … attr) : 创建一个目录

Path createFile(Path path,FileAttribute<?> … arr) : 创建一个文件
void delete(Path path) : 删除一个文件

Pathmove(Path src, Path dest, CopyOption…how) : 将 src 移动到 dest 位置
long size(Pathpath) : 返回 path 指定文件的大小Files 类
boolean exists(Path path,LinkOption … opts) : 判断文件是否存在
boolean isDirectory(Path path, LinkOption …opts) : 判断是否是目录
boolean isExecutable(Path path) : 判断是否是可执行文件

booleanisHidden(Path path) : 判断是否是隐藏文件
boolean isReadable(Path path) : 判断文件是否可读
boolean isWritable(Path path) : 判断文件是否可写

boolean notExists(Path path,LinkOption … opts) : 判断文件是否不存在
public static A readAttributes(Path path,Class type,LinkOption… options) :

获取与 path指定的文件相关联的属性 。
Files 常用方法: 用于操作内容

SeekableByteChannel newByteChannel(Path path, OpenOption…how) : 获取与指定文件的连接, how 指定打开方式。
DirectoryStream newDirectoryStream(Path path) : 打开 path 指定的目录

InputStream newInputStream(Path path, OpenOption…how): 获取 InputStream 对象

OutputStream newOutputStream(Path path, OpenOption…how) : 获取 OutputStream 对象自动 资源管理