Path类在JDK7帮助文档中的解释是定位一个文件或者指明一个路径。说白了就是可以代表一个带有路径的文件定位也可以表示一个路径。其实用起来还是很简单的
如下代码所示
import java.io.IOException;import java.nio.file.LinkOption;import java.nio.file.Path;import java.nio.file.Paths;public class Main { public static void main(String[] args) throws IOException { Path path=Paths.get("pathtest.txt"); System.out.println(path.getRoot()); System.out.println(path.toString()); System.out.println(path.getFileName()); System.out.println(path.getNameCount()); System.out.println(path.getName(path.getNameCount()-1)); Path realPath=path.toRealPath(LinkOption.NOFOLLOW_LINKS); System.out.println(realPath.getRoot()); System.out.println(realPath); }}
之前学习的时候懒得去看JDK,有什么想实现的功能就直接去谷歌找代码。要么是在别人博客上找到只言片语,要么就是论坛提问中找到自己需要的代码片段,很少去看官方的JDK。其实真正原汁原味的帮助应该是官方的JDK。这次学lynda的视频的时候正好学到这里的内容,尝试着去看了看官方的文档还是很有意思的部分源文档如下。
An object that may be usedto locate a file in a file system. It will typically represent a systemdependent file path.
A Path represents a paththat is hierarchical and composed of a sequence of directory and file nameelements separated by a special separator or delimiter. A root component, thatidentifies a file system hierarchy, may also be present. The name element thatis farthest from the root of the directory hierarchy is the name of a file ordirectory. The other name elements are directory names. A Path can represent aroot, a root and a sequence of names, or simply one or more name elements. APath is considered to be an empty path if it consists solely of one nameelement that is empty. Accessing a file using an empty path is equivalent toaccessing the default directory of the file system.
第一段话说这个Path类(准确的说是接口)是一个对象,这个对象呢可以在一个文件系统中定位一个文件。这里locate这个词很有意思,是“定位”的意思,这就说明了Path这个类最主要的作用就是定位一个文件或者一个路径。其实文件和路径的区别就是最后是以文件名结尾还是一个目录结尾。于是JDK下面接着对这个Path所代表的这个路径进行描述。其中主要的特点是“hierarchical”,这个词应该不难理解,在eclipse当中任意一个方法上右击就会显示“open call hierarchy”(打开调用层次)所以JDK中想表示的意思是这个路径是具有层次性的。后面描述的是这个路径的特点,是一个序列、目录、由分隔符以及文件名组成。在整个所表示的路径中距离根路径最远的是文件名,在这之间的是各个目录的名字(感觉自己将JDK翻译后读起来好二啊)。后面继续解释Path也可以表示一个根路径,或者是具有序列性的目录。仅仅在当Path所表示的路径中有空的时候Path表示空路径(这个路径不存在)。当通过一个空路径去访问文件的时候等同于使用系统默认路径访问。
到此为止基本上对这个类有了一个大致的了解,剩下的就是去探索各个方法的用途了,依然需要边用边学习JDK。
这段时间一直在学习英语,感觉英语和汉语最大的不同之一(注意这里有之一)是英语总是把修饰放在后面说。这对于中国人很不好理解。比如上面JDK中形容Path的时候用了很多修饰,统统都是放在后面,属于对前面的补充说明。我们通常会说“这个Path类是一个具有层次结构的,由分隔符分割的,如果是代表一个文件的话最后可能有文件名的一个路径”。
再举一个例子就是描述地址的例子。国外说地址,他们通常是把小地方放在前面,然后用大地方去修饰小地方,而中国人是比较习惯将大地方放在小地方前面。从这里也可以看出来英国人(美国人)的思维习惯比中国人直接,有什么先说什么,然后再去修饰,是一种补救的思维;中国人更注重的是全局性过渡到局部,是一种稳扎稳打、一步一个脚印的思维。正因为这些英语也给美国人(英国人)带来了特有的语言习惯以及礼貌习惯。比如和别人争论的时候中国人如果不同意对方的观点通常会针锋相对的先否决对方,然后列出自己的种种想法。看美剧或者电影就可以发现,同样的场景国外人通常是先赞同,然后紧接着一个but带出自己的观点,然后否定对方。
文化没有好与不好之分,语言没有孰优孰劣,只是一个习惯而已。(纯属瞎想,勿喷)