Java SE 7文件操作(1)-Path类简介

摘自开发者的天空

1. Path 的概念
文件系统会把文件进行组织并存放在媒介上,通常是一个或多个硬盘上。目前使用的大多数的文件系统是以树形的方式来存储文件的。在树的顶端是一个(或多个) 根节点,在根节点之下是文件和目录,目录下又可以包含文件和目录。理论上可以这样一层层的一直嵌套下去(当然实际中是不可能的,例如Windows系统对 路径的长度有限制)。
下面的图中展示了一个包含一个根节点的目录树。(在Windows系统中支持多个根节点,例如C:\和D:\分别是一个根节点。)
io-dirStructure.JPG

下载 (18.96 KB)
2010-3-16 22:57


Path能够唯一的标识文件系统中的某一个文件。例如上面图中的statusReport文件在Windows系统中就可以使用以下的Path来标识:
c:\home\sally\statusReport
在solaris系统中,其path为
/home/sally/statusReport.
Path中的分隔符在不同的文件系统中是不同的,例如在Windows系统中使用\,在Solaris系统中使用/。
Path又可以分为绝对路径和相对路径。绝对路径总是含有根节点和用来定位文件的完整的目录列表。例如/home/sally/statusReport 就是绝对路径。相对路径需要和另外的路径结合在一起才能够确定一个文件。例如加哦加哦哦joe/foo就是一个相对路径,如果没有其他的信息,程序就没有 办法定位这个文件。我们必须说这个是相对/home的相对路径,这样我们才能够找到它。
除了我们熟悉的目录和文件之外,有一些文件系统中还支持符号链接(symbolic link),也称为symlink或soft link。一个符号链接是一个特殊的文件,它实际上是另外一个链接的引用。在大多数情况下符号链接对应用程序是透明的,对符号链接的操作会自动的重定向到 链接所指向的目的地,除非操作是删除这个符号链接、重命名这个符号链接或修改符号链接的目的地。
在下面的图中,logFile对于用户来说就是一个常规的文件,但是实际上是一个符号链接,链接到dir/logs/HomeLogFile文件。 HomeLogFile是这个链接的目的地。
io-symlink.jpg

下载 (23.49 KB)
2010-3-16 22:57

 

不恰当的使用符号链接会导致循环引用,例如目录A是一个符号链接,指向目录B,目录B下有一个子目录是符号链接,指向目录A的父目录。这样,当程序企图递 归的遍历整个目录树时,就会出问题。幸运的是,这个问题已经被发现了,并且不会导致程序的死循环。


2.Path类
Path类是JDK7新引入的一个类,该类是java.nio.file包的基石。
和类的名称所展示的一样,Path类就是文件系统中path概念的程序表现。Path对象包含了文件名和目录列表,这些信息可以用来创建path,并且用 来检验、定位和操作文件。
Path实例是和底层操作系统相关的。在Solaris系统中,Path使用Solaris的句法(/home/joe/foo);在Window操作系 统中,Path会使用Window的句法(C:\home\joe\foo)。因此Path不是操作系统无关的。你不能够比较一个来自Solaris文件 系统的Path和一个来自Windows文件系统的Path并期望它们相等,在目录结构和文件完全一样的时候也不行。
Path对应的文件或者目录可以不存在。我们可以以不同的方式创建Path实例并操作它:扩展路径、抽取路径的一部分、和其他的Path比较。我们也可以 检查Path对应的目录或文件是否存在、创建文件 或目录、打开或删除文件、修改许可权限等。
Path类是能够区分符号链接的。所有的Path的方法要么会检测是否是符号链接并执行不同的操作,或者提供了一个选择来使用户能够配置当遇到符号链接的 时候执行什么操作。
Path类提供了很多易于使用的特性,Path类的方法可以分成两类:


  • 路径操作—返回路径的一部分如根节点、名称、父目录的方法或者其他操作路径的方法。
  • 文件操作 —创建文件、打开文件、创建目录、删除文件、 拷贝文件等操作的方法。

在下一篇文章中,我们会具体介绍Path类的这些方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值