pub trait Path:
JType
+ Comparable<Self>
+ JObjRef
+ JObjNew
+ PartialEq
+ Debugwhere
Self: Sized,{
const CLASS: &'static str = "java/nio/file/Path";
const OBJECT_SIG: &'static str = "Ljava/nio/file/Path;";
const DIM: u8 = 0u8;
Show 19 methods
// Required methods
fn is_absolute(&self) -> bool;
fn get_root<P: Path>(&self) -> Option<P>;
fn get_file_name<P: Path>(&self) -> Option<P>;
fn get_parent<P: Path>(&self) -> Option<P>;
fn get_name_count(&self) -> i32;
fn get_name<P: Path>(&self, index: i32) -> Result<P, <Self as JType>::Error>;
fn subpath<P: Path>(
&self,
begin_index: i32,
end_index: i32,
) -> Result<P, <Self as JType>::Error>;
fn starts_with<P: Path>(&self, other: P) -> bool;
fn starts_with_string(
&self,
other: String,
) -> Result<bool, <Self as JType>::Error>;
fn ends_with<P: Path>(&self, other: P) -> bool;
fn ends_with_string(
&self,
other: String,
) -> Result<bool, <Self as JType>::Error>;
fn normalize<P: Path>(&self) -> P;
fn resolve<P: Path>(&self, other: P) -> P;
fn resolve_string<P: Path>(
&self,
other: String,
) -> Result<P, <Self as JType>::Error>;
fn resolve_sibling<P: Path>(&self, other: P) -> P;
fn resolve_sibling_string<P: Path>(
&self,
other: String,
) -> Result<P, <Self as JType>::Error>;
fn relativize<P: Path>(&self, other: P) -> Result<P, <Self as JType>::Error>;
fn to_absolute_path<P: Path>(&self) -> Result<P, <Self as JType>::Error>;
fn to_file(&self) -> Result<File, <Self as JType>::Error>;
}
Expand description
可用于在文件系统中定位文件的对象。它通常表示与系统相关的文件路径。 Path 表示分层路径,由由特殊分隔符或定界符分隔的目录和文件名元素序列组成。还可能存在标识文件系统层次结构的根组件。 距离目录层次结构的根最远的名称元素是文件或目录的名称。其他名称元素是目录名称。 Path 可以表示根、根和名称序列,或仅表示一个或多个名称元素。 如果 Path 仅由一个空的名称元素组成,则该 Path 被视为空路径。使用空路径访问文件相当于访问文件系统的默认目录。 Path 定义 getFileName、getParent、getRoot 和 subpath 方法来访问路径组件或其名称元素的子序列。 除了访问路径的组件之外,Path 还定义了 resolve 和 resolveSibling 方法来组合路径。 relativize 方法可用于构建两个路径之间的相对路径。 可以使用 startsWith 和 endsWith 方法比较和测试路径。 此接口扩展了 Watchable 接口,以便可以使用 WatchService 注册路径所在的目录并监视目录中的条目。 警告:此接口仅供开发自定义文件系统实现的人员实现。未来版本中可能会向此接口添加方法。 访问文件路径可以与 Files 类一起使用,以操作文件、目录和其他类型的文件。例如,假设我们希望 java.io.BufferedReader 从文件“access.log”中读取文本。 该文件位于相对于当前工作目录的目录“logs”中,并且是 UTF-8 编码的。 Path path = FileSystems.getDefault().getPath(“logs”, “access.log”); BufferedReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8); 互操作性与默认提供程序关联的路径通常可与 java.io.File 类互操作。其他提供程序创建的路径不太可能与 java.io.File 表示的抽象路径名互操作。 toPath 方法可用于从 java.io.File 对象表示的抽象路径名获取 Path。生成的 Path 可用于对与 java.io.File 对象相同的文件进行操作。 此外,toFile 方法可用于从 Path 的字符串表示构造 File。并发性此接口的实现是不可变的,并且可以安全地供多个并发线程使用。
Provided Associated Constants§
Sourceconst OBJECT_SIG: &'static str = "Ljava/nio/file/Path;"
const OBJECT_SIG: &'static str = "Ljava/nio/file/Path;"
Ljava/nio/file/Path;
Required Methods§
Sourcefn is_absolute(&self) -> bool
fn is_absolute(&self) -> bool
指示此路径是否为绝对路径。绝对路径是完整的,因为它不需要与其他路径信息结合来定位文件。 当且仅当此路径为绝对路径时,才返回 true
Sourcefn get_root<P: Path>(&self) -> Option<P>
fn get_root<P: Path>(&self) -> Option<P>
返回此路径的根组件作为“Path”对象,如果此路径没有根组件,则返回“null”。 返回:表示此路径根组件的路径,或“null”
Sourcefn get_file_name<P: Path>(&self) -> Option<P>
fn get_file_name<P: Path>(&self) -> Option<P>
返回该路径表示为“路径”对象的文件或目录的名称。文件名是距目录层次结构中的根最远的元素。
返回:表示文件或目录名称的路径,或null
如果此路径为零元素
Sourcefn get_parent<P: Path>(&self) -> Option<P>
fn get_parent<P: Path>(&self) -> Option<P>
返回 父路径,如果此路径没有父路径,则返回 null。
此路径对象的父路径由此路径的根组件(如果有)和路径中的每个元素组成,但目录层次结构中距离根最远的元素除外。
此方法不访问文件系统;路径或其父路径可能不存在。此外,此方法不会消除某些实现中可能使用的特殊名称,例如“.”和“..”。
例如,在 UNIX 上,“/a/b/c”的父路径是“/a/b”,而“x/y/.”的父路径是“x/y”。
此方法可以与 normalize 方法一起使用,以消除冗余名称,适用于需要类似 shell 的导航的情况。
如果此路径有一个或多个元素,但没有根组件,则此方法相当于评估表达式: subpath(0, getNameCount()-1);
返回:表示路径父路径的路径
Sourcefn get_name_count(&self) -> i32
fn get_name_count(&self) -> i32
返回路径中名称元素的数量。 返回:路径中的元素数量,如果此路径仅代表根组件,则返回“0”
Sourcefn get_name<P: Path>(&self, index: i32) -> Result<P, <Self as JType>::Error>
fn get_name<P: Path>(&self, index: i32) -> Result<P, <Self as JType>::Error>
将此路径的名称元素作为 Path
对象返回。index
参数是要返回的名称元素的索引。
目录层次结构中距离根最近的元素的索引为 0
。距离根最远的元素的索引为 getNameCount
count-1
。
返回:名称元素
如果 index
为负数、index
大于或等于元素数,或者此路径有零个名称元素,则抛出:IllegalArgumentException
index
元素的索引
Sourcefn subpath<P: Path>(
&self,
begin_index: i32,
end_index: i32,
) -> Result<P, <Self as JType>::Error>
fn subpath<P: Path>( &self, begin_index: i32, end_index: i32, ) -> Result<P, <Self as JType>::Error>
返回一个相对“Path”,它是此路径的名称元素的子序列。 “begin_index”和“end_index”参数指定名称元素的子序列。
在目录层次结构中,最接近根的名称的索引为“0”。距离根最远的名称的索引为“getNameCount”count“-1”。
返回的“Path”对象具有从“begin_index”开始并延伸到索引“end_index-1”处的元素的名称元素。
返回:一个新的“Path”对象,它是此“Path”中名称元素的子序列
抛出:IllegalArgumentException 如果“begin_index”为负数,或大于或等于元素数。如果“end_index”小于或等于“begin_index”,或大于元素数。
begin_index
第一个元素的索引(包括)
end_index
最后一个元素的索引(不包括)
Sourcefn starts_with<P: Path>(&self, other: P) -> bool
fn starts_with<P: Path>(&self, other: P) -> bool
测试此路径是否以给定路径开头。如果此路径的根组件以给定路径的根组件开头,并且此路径以与给定路径相同的名称元素开头,则此路径以给定路径开头。
如果给定路径的名称元素多于此路径,则返回 false。此路径的根组件是否以给定路径的根组件开头取决于文件系统。
如果此路径没有根组件,而给定路径有根组件,则此路径不以给定路径开头。如果给定路径与此路径的其他 FileSystem 相关联,则返回 false。
如果此路径以给定路径开头,则返回 true;否则返回 false
other
给定路径
Sourcefn starts_with_string(
&self,
other: String,
) -> Result<bool, <Self as JType>::Error>
fn starts_with_string( &self, other: String, ) -> Result<bool, <Self as JType>::Error>
测试此路径是否以 Path
开头,该路径是通过转换给定路径字符串构建的,其方式与 startsWith(Path)
startsWith(Path) 方法指定的方式完全相同。
例如,在 UNIX 上,路径“foo/bar”以“foo”和“foo/bar”开头。它不以“f”或“fo”开头。
如果此路径以给定路径开头,则返回:true
;否则返回false
如果路径字符串无法转换为 Path,则抛出:InvalidPathException。
other
给定的路径字符串
Sourcefn ends_with<P: Path>(&self, other: P) -> bool
fn ends_with<P: Path>(&self, other: P) -> bool
测试此路径是否以给定路径结束。如果给定路径有 N 个元素,没有根组件,并且此路径有 N 个或更多元素,则如果每条路径的最后 N 个元素(从距离根最远的元素开始)相等,则此路径以给定路径结束。
如果给定路径有根组件,则如果此路径的根组件以给定路径的根组件结束,并且两个路径的相应元素相等,则此路径以给定路径结束。此路径的根组件是否以给定路径的根组件结束取决于文件系统。
如果此路径没有根组件,而给定路径有根组件,则此路径不以给定路径结束。如果给定路径与此路径的不同 FileSystem 相关联,则返回 false。
返回:如果此路径以给定路径结束,则返回 true;否则返回 false
other
给定路径
Sourcefn ends_with_string(
&self,
other: String,
) -> Result<bool, <Self as JType>::Error>
fn ends_with_string( &self, other: String, ) -> Result<bool, <Self as JType>::Error>
测试此路径是否以 Path
结尾,该路径通过转换给定的路径字符串构造而成,其方式与 endsWith(Path)
endsWith(Path) 方法指定的方式完全相同。
例如,在 UNIX 上,路径“foo/bar”以“foo/bar”和“bar”结尾。它不以“r”或“/bar”结尾。
请注意,不考虑尾随分隔符,因此在 Path
“foo/bar” 上使用 String
“bar/”调用此方法将返回 true
。
如果此路径以给定的路径结尾,则返回:true
;否则返回 false
如果路径字符串无法转换为 Path,则抛出:InvalidPathException。
other
给定的路径字符串
Sourcefn normalize<P: Path>(&self) -> P
fn normalize<P: Path>(&self) -> P
返回一条路径,该路径是此路径,但消除了冗余名称元素。此方法的精确定义取决于实现,但通常它源自此路径,即不包含冗余名称元素的路径。 在许多文件系统中,“.”和“..”是用于指示当前目录和父目录的特殊名称。 在此类文件系统中,所有出现的“.”都被视为冗余。如果“..”前面有一个非“..”名称,则这两个名称都被视为冗余(重复识别此类名称的过程,直到不再适用为止)。 此方法不访问文件系统;路径可能无法找到存在的文件。从路径中消除“..”和前面的名称可能会导致路径找到与原始路径不同的文件。当前面的名称是符号链接时可能会出现这种情况。 返回:结果路径或此路径(如果它不包含冗余名称元素);如果此路径确实有根组件并且所有名称元素都是冗余的,则返回空路径
Sourcefn resolve<P: Path>(&self, other: P) -> P
fn resolve<P: Path>(&self, other: P) -> P
根据此路径解析给定路径。如果其他参数是isAbsolute()
绝对路径,则此方法通常会返回other
。如果other
是空路径,则此方法通常会返回此路径。
否则,此方法将此路径视为目录,并根据此路径解析给定路径。在最简单的情况下,给定路径没有getRoot
根组件,在这种情况下,此方法将给定路径连接到此路径并返回以给定路径endsWith
结尾的结果路径。
如果给定路径具有根组件,则解析高度依赖于实现,因此未指定。
返回:结果路径
other
根据此路径解析的路径
Sourcefn resolve_string<P: Path>(
&self,
other: String,
) -> Result<P, <Self as JType>::Error>
fn resolve_string<P: Path>( &self, other: String, ) -> Result<P, <Self as JType>::Error>
将给定的路径字符串转换为 Path
,并按照 resolve(Path)
解析方法指定的方式根据此 Path
进行解析。
例如,假设名称分隔符为“/
”,路径表示“foo/bar
”,则使用路径字符串“gus
”调用此方法将得到 Path
“foo/bar/gus
”。
返回:结果路径
如果路径字符串无法转换为 Path,则抛出:InvalidPathException。
other
根据此路径进行解析的路径字符串
Sourcefn resolve_sibling<P: Path>(&self, other: P) -> P
fn resolve_sibling<P: Path>(&self, other: P) -> P
根据此路径的 getParent
父路径解析给定路径。当需要用另一个文件名替换文件名时,这很有用。
例如,假设名称分隔符为“/
”,路径表示“dir1/dir2/foo
”,则使用 Path
“bar
” 调用此方法将得到 Path
“dir1/dir2/bar
”。如果此路径没有父路径,或者 other
是 isAbsolute()
绝对路径,则此方法返回 other
。
如果 other
是空路径,则此方法返回此路径的父路径,或者如果此路径没有父路径,则返回空路径。
返回:结果路径
other
根据此路径的父路径解析的路径
Sourcefn resolve_sibling_string<P: Path>(
&self,
other: String,
) -> Result<P, <Self as JType>::Error>
fn resolve_sibling_string<P: Path>( &self, other: String, ) -> Result<P, <Self as JType>::Error>
将给定的路径字符串转换为 Path
,并按照 resolveSibling(Path)
resolveSibling 方法指定的方式根据此路径的 getParent
父路径进行解析。
返回:结果路径
如果路径字符串无法转换为 Path,则抛出:InvalidPathException。
other
根据此路径的父路径进行解析的路径字符串
Sourcefn relativize<P: Path>(&self, other: P) -> Result<P, <Self as JType>::Error>
fn relativize<P: Path>(&self, other: P) -> Result<P, <Self as JType>::Error>
构造此路径与给定路径之间的相对路径。相对化是 resolve(Path)
解析的逆过程。
此方法尝试构造一个 isAbsolute
相对路径,当针对此路径解析 resolve(Path)
时,将生成一个与给定路径定位相同文件的路径。
例如,在 UNIX 上,如果此路径为 "/a/b"
且给定路径为 "/a/b/c/d"
,则生成的相对路径将为 "c/d"
。
如果此路径和给定路径没有 getRoot
根组件,则可以构造相对路径。如果只有一条路径具有根组件,则无法构造相对路径。
如果两条路径都有根组件,则是否可以构造相对路径取决于实现。如果此路径和给定路径 equals
相等,则返回空路径。
对于任何两个 normalize
规范化路径 p 和 q,其中 q 没有根组件,p.relativize(p.resolve(q)).equals(q)
当支持符号链接时,结果路径在根据此路径解析时是否产生可用于定位 Files#isSameFile
与 other
相同的文件的路径取决于实现。
例如,如果此路径为 "/a/b"
且给定路径为 "/a/x"
,则结果相对路径可能为 "../x"
。如果 "b"
是符号链接,则 "a/b/../x"
是否会定位与 "/a/x"
相同的文件取决于实现。
返回:生成的相对路径,如果两个路径相等,则返回空路径。
如果 other
不是可以相对于此路径进行相对化的 Path
,则抛出:IllegalArgumentException
other
相对于此路径进行相对化的路径
Sourcefn to_absolute_path<P: Path>(&self) -> Result<P, <Self as JType>::Error>
fn to_absolute_path<P: Path>(&self) -> Result<P, <Self as JType>::Error>
返回表示此路径绝对路径的 Path
对象。如果此路径已经是 Path#isAbsolute
绝对路径,则此方法仅返回此路径。
否则,此方法以依赖于实现的方式解析路径,通常通过根据文件系统默认目录解析路径。根据实现,如果文件系统不可访问,此方法可能会抛出 I/O 错误。
返回:表示绝对路径的 Path
对象
抛出:
- java.io.IOError 如果发生 I/O 错误;
- SecurityException 在默认提供程序的情况下,安装了安全管理器,并且此路径不是绝对路径,则调用安全管理器的
SecurityManager#checkPropertyAccess(String)
checkPropertyAccess 方法来检查对系统属性user.dir
的访问权限
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.