《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一2.5.1 Path

简介: 本节书摘来华章计算机《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一书中的第2章 ,第2.5.1节,[美] 凯S.霍斯特曼(Cay S. Horstmann) 著陈昊鹏 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.5.1 Path

Path表示的是一个目录名序列,其后还可以跟着一个文件名。路径中的第一个部件可以是根部件,例如 / 或 C:,而允许访问的根部件取决于文件系统。以根部件开始的路径是绝对路径;否则,就是相对路径。例如,我们要分别创建一个绝对路径和一个相对路径;其中,对于绝对路径,我们假设计算机运行的是类Unix的文件系统:
image

静态的Paths.get方法接受一个或多个字符串,并将它们用默认文件系统的路径分隔符(类Unix文件系统是/,Windows是)连接起来。然后它解析连接起来的结果,如果其表示的不是给定文件系统中的合法路径,那么就抛出InvalidPathException异常。这个连接起来的结果就是一个Path对象。
get方法可以获取包含多个部件构成的单个字符串,例如,可以像下面这样从配置文件中读取路径:
image

注意:路径不必对应着某个实际存在的文件,它仅仅只是一个抽象的名字序列。你在接下来的小节中将要看到,当你想要创建文件时,首先要创建一个路径,然后才调用方法去创建对应的文件。
组合或解析路径是司空见惯的操作,调用p.resolve(q)将按照下列规则返回一个路径:

  • 如果q是绝对路径,则结果就是q。
  • 否则,根据文件系统的规则,将“p后面跟着q”作为结果。

例如,假设你的应用系统需要查找相对于给定基目录的工作目录,其中基目录是从配置文件中读取的,就像前一个例子一样。
image

将创建/opt/myapp/temp。
resolve的对立面是relativize,即调用p.relativize(r)将产生路径q,而对q进行解析的结果正是r。例如,以“/home/cay”为目标对“/home/fred/myprog”进行相对化操作,会产生“../fred/myprog”,其中,我们假设..表示文件系统中的父目录。
normalize方法将移除所有冗余的.和..部件(或者文件系统认为冗余的所有部件)。例如,规范化/home/cay/../fred/./myprog将产生/home/fred/myprog。
toAbsolutePath方法将产生给定路径的绝对路径,该绝对路径从根部件开始,例如/home/fred/input.txt或c:Usersfredinput.txt。
Path类有许多有用的方法用来将路径断开。下面的代码示例展示了其中部分最有用的方法:
image

注意:偶尔,你可能需要与遗留系统的API交互,它们使用的是File类而不是Path接口。Path接口有一个toFile方法,而File类有一个toPath方法。
image
image

相关文章
|
19天前
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
47 2
|
17天前
|
存储 Java API
优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。
【10月更文挑战第19天】本文介绍了如何优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。内容包括Map的初始化、使用Stream API处理Map、利用merge方法、使用ComputeIfAbsent和ComputeIfPresent,以及Map的默认方法。这些技巧不仅提高了代码的可读性和维护性,还提升了开发效率。
39 3
|
17天前
|
存储 安全 Java
Java Map新玩法:深入探讨HashMap和TreeMap的高级特性
【10月更文挑战第19天】Java Map新玩法:深入探讨HashMap和TreeMap的高级特性,包括初始容量与加载因子的优化、高效的遍历方法、线程安全性处理以及TreeMap的自然排序、自定义排序、范围查询等功能,助你提升代码性能与灵活性。
23 2
|
5月前
|
Java 数据挖掘 开发者
Java网络编程进阶:Socket通信的高级特性与应用
【6月更文挑战第21天】Java Socket通信是分布式应用的基础,涉及高级特性如多路复用(Selector)和零拷贝,提升效率与响应速度。结合NIO和AIO,适用于高并发场景如游戏服务器和实时数据分析。示例展示了基于NIO的多路复用服务器实现。随着技术发展,WebSockets、HTTP/2、QUIC等新协议正变革网络通信,掌握Socket高级特性为应对未来挑战准备。
49 1
|
1月前
|
消息中间件 分布式计算 Java
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
27 2
|
1月前
|
消息中间件 存储 Java
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
41 3
|
6月前
|
XML Java API
你必须掌握的 21 个 Java 核心技术!,千峰Java
你必须掌握的 21 个 Java 核心技术!,千峰Java
|
3月前
|
Java 开发工具
开发工具系类 之 Cannot determine path to ‘tools.jar‘ library for 17 (D:/Program Files/Java/jdk-17.0.9)
这篇文章讲述了作者在升级JDK至17版本后遇到IDEA无法识别`tools.jar`的问题,并提供了两种解决方法:升级IDEA版本或降低JDK版本,并提供了相关版本的IDEA兼容性信息。
开发工具系类 之 Cannot determine path to ‘tools.jar‘ library for 17 (D:/Program Files/Java/jdk-17.0.9)
|
4月前
|
算法 Java
Java语言实现最短路径算法(Shortest Path)
Java语言实现最短路径算法(Shortest Path)
58 3
|
4月前
|
Java
关于idea报错:Cannot determine path to 'tools.jar' library for 17 (E:\java-jdk\jdk17)的解决办法
关于idea报错:Cannot determine path to 'tools.jar' library for 17 (E:\java-jdk\jdk17)的解决办法
下一篇
无影云桌面