Java SE 7文件操作中的路径操作是怎样的

Java SE 7文件操作中的路径操作是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Java SE 7中对路径类的操作主要有两种:对路径的操作和对文件的操作。我们就来了解一下对路径的操作。

创建路径实例
路径实例包含了指定文件或目录位置的信息,在实例化路径类时,需要指定一个或多个目录或文件名。路径的根目录不是必须的;路径信息可能仅仅是一个目录或文件的名称。
最简单的创建路径实例的方式就是使用路径(注意这里有一个s)类的得到方法:,

 Path  p1 =, Paths.get (“/tmp/foo");,,,,, Path  p2 =, Paths.get (args [0]),,,,,, Path  p3 =, Paths.get(“文件:///用户/乔/FileTest.java"); 



路径类接受字符串或URI作为参数。

获取路径信息
前面我们已经说过了,文件系统一般是树形结构,因此我们可以把路径理解为按顺序存储的一系列的名称(目录名称和文件名称)。目录结构中* * *一层的目录名就是序列中索引为0的那一个,目录结构中* * *一层的目录名或者文件名就是序列中指数为n - 1的那一个(这里n是路径中层次的数目).Path类提供方法来通过指数获取序列中的一个元素或一个子序列。
随后的例子中我们使用的目录结构如下图:
 Java SE 7文件操作中的路径操作是怎样的“> <br/>,,,下面的代码定义了一个Path对象并获取其中的信息。要注意的是这些代码中除了isHidden方法外,其他的方法并不需要指定的目录或文件存在;如果不存在,isHidden方法会抛出异常。 <br/></p><p>Java代码</p><pre>Path path = Paths.get(


下面是这段代码的输出情况



上面的代码中我们创建Path时使用的是绝对路径,下面我们来看看创建路径时使用相对路径时,这段代码的执行结果:

Java代码

//Path path = Paths.get("sally/bar");     // Solaris syntax     Path path = Paths.get("sally\\bar");    // Microsoft Windows syntax


大家可以自行去实验一下具体的输出是什么。

去除Path中的冗余
在很多文件系统中我们使用'.'来代表当前目录,使用'..'代表父目录。在有些情况下我们创建的路径中会有冗余的路径信息,例如:
       /home/./乔/foo
,,,,,,,/home/sally/../乔/foo
方法正常化会去除这些冗余信息,包括& # 39;强生# 39;或& # 39;目录/. . & # 39;上。面的两个例子在去除冗余信息后都是/home/joe/foo。
要注意的是规范化方法并不去检查文件系统,它只是简单的进行语法操作。在第二个例子中,如果莎莉是一个指向其他的目录的符号链接,那么去除了莎莉/. .后可能导致路径不在指向原来的文件或目录。
如果你需要清除冗余信息,又要保证结果仍然指向正确的文件或目录,可以使用toRealPath方法。在下面我们会讲到这个方法。

转换路径
有3个方法用来转换路径。
,,,* toUri方法
,,,,,如果你需要将路径转换为可以在浏览器中打开的字符串格式,可以使用toUri方法,例如:

Java代码

 Path  p1 =, Paths.get (“/home/logfile");,,,,, System.out.format (“% s % n",, p1.toUri());,,//,结果是,文件:///home/日志文件


,,,,,注意在这里即使/home/日志文件# 39;指向的目录或文件不存在,这段代码同样能够执行成功。

Java SE 7文件操作中的路径操作是怎样的