Java SE 7 新特性之文件操作(1)

转自开发者的天空

 

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


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


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



2.Path类
Path类是JDK7新引入的一个类,该类是java.io.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、付费专栏及课程。

余额充值