The Path class includes various methods that can be used to obtain information about the path, access elements of the path, convert the path to other forms, or extract portions of a path. There are also methods for matching the path string and methods for removing redundancies in a path. This lesson addresses these Pathmethods, sometimes called syntactic operations, because they operate on the path itself and don't access the file system.
This section covers the following:
Creating a Path
A Path instance contains the information used to specify the location of a file or directory. At the time it is defined, a Path is provided with a series of one or more names. A root element or a file name might be included, but neither are required. A Path might consist of just a single directory or file name.
You can easily create a Path object by using one of the following get methods from the Paths (note the plural) helper class:
You can think of the Path as storing these name elements as a sequence. The highest element in the directory structure would be located at index 0. The lowest element in the directory structure would be located at index [n-1], where n is the number of name elements in the Path. Methods are available for retrieving individual elements or a subsequence of the Path using these indexes.
The examples in this lesson use the following directory structure.
Sample Directory Structure
The following code snippet defines a Path instance and then invokes several methods to obtain information about the path: (Below is written in groovy code)
The previous example shows the output for an absolute path. In the following example, a relative path is specified:
Removing Redundancies From a Path
Many file systems use "." notation to denote the current directory and ".." to denote the parent directory. You might have a situation where a Path contains redundant directory information. Perhaps a server is configured to save its log files in the "/dir/logs/." directory, and you want to delete the trailing "/." notation from the path. The following examples both include redundancies:
The normalize method removes any redundant elements, which includes any "." or "directory/.." occurrences. Both of the preceding examples normalize to/home/joe/foo. It is important to note that normalize doesn't check at the file system when it cleans up a path. It is a purely syntactic operation. In the second example, if sally were a symbolic link, removing sally/.. might result in a Path that no longer locates the intended file.
To clean up a path while ensuring that the result locates the correct file, you can use the toRealPath method.
Converting a Path
You can use three methods to convert the Path. If you need to convert the path to a string that can be opened from a browser, you can use toUri. For example:
This method throws an exception if the file does not exist or cannot be accessed. For example:
You can combine paths by using the resolve method. You pass in a partial path , which is a path that does not include a root element, and that partial path is appended to the original path. For example, consider the following code snippet:
A common requirement when you are writing file I/O code is the capability to construct a path from one location in the file system to another location. You can meet this using the relativize method. This method constructs a path originating from the original path and ending at the location specified by the passed-in path. The new path is relative to the original path.
For example, consider two relative paths defined as joe and sally:
Comparing Two Paths
The Path class supports equals, enabling you to test two paths for equality. The startsWith and endsWith methods enable you to test whether a path begins or ends with a particular string. These methods are easy to use. For example:
You can also put Path objects into a Collection. See the Collections trail for more information about this powerful feature.
When you want to verify that two Path objects locate the same file, you can use the isSameFile method, as described in Checking Whether Two Paths Locate the Same File.
* Java 獲取當前操作系統的信息