对于 Unix 用户(特别是管理员)来说,要非常熟悉链接的概念。链接分为两种:软链接(符号链接)和硬链接。如果你是 Windows 用户,可能对链接不是很熟悉,但是 Windows 系统却完全支持它们,尤其是软链接,在 Windows 中通常叫做快捷方式。
NIO.2 同时支持这两种链接,每个 Path 类的方法都能判断当前文件是否为链接,并且按你的要求做相应的处理。
链接简介
当你只通过
文件名就能得到文件,而不需要经过层层目录的时候,那么这个文件就被称为链接。链接分为软链接(符号链接)和硬链接。当一个文件的两个名字具有相同的权重,并且在索引节点表(inode table,在 Linux 中,文件并非直接放在目录中;而是分配了节点索引,用于 Linux 定位)中指向相同的
硬盘数据,那么就称为硬链接。当一个文件存在一个主文件和一个额外的入口文件,这个入口文件中存有指回主文件的引用,那么就称为软链接。软链接比硬链接更为灵活,因此使用也更为广泛。下面看看这两种链接的主要异同:
- 只能为文件创建硬链接,不能为目录创建硬链接;而软链接即可为文件创建,也可以为目录创建。
- 硬链接不能跨文件系统存在;软链接可以跨文件系统存在。
- 硬链接的目标文件必须存在;软连接的目标文件可以不存在。
- 删除硬链接指向的目标文件并不会删除硬链接自身,并且硬链接依旧可以提供底层文件的内容;删除软链接指向的目标文件并不会删除软链接自身,但是删除了目标文件之后,软链接也就变成了一个无效的链接文件。
- 删除硬链接或软链接,并不会影响目标文件。
- 硬链接和目标文件是相同的实体,所有属性都完全一样;软链接则不相同。
- 硬链接的行为和一个普通文件完全一样,因此硬链接很难被找到;软链接的目标文件可以不存在,因此软链接使用起来更为灵活。
文章来源:http://www.aptusource.org/2014/03/nio-2-symbolic-and-hard-links/