-
Java NIO.2
收藏详细介绍 JSR203(More New I/O APIs for the Java Platform)规范。 从 Java 7 开始,可以使用 NIO.2 部分替换旧的 I/O 操作。
最近更新文章
[NIO.2] 第二十一篇 创建软链接
在 NIO.2 中,创建软链接非常简单,只需要调用 Files.createSymbolicLink() 方法即可。这个方法需要传入软链接和目标文件的 Path 对象,并且可以传入一组文件属性,返回软链接的 Path 对象。
如果你的文件系统不支持软链接,那么将会抛出 UnsupportedOperationException 异常。记住,目标文件可以使用绝对路径也可以使用相对路径来定义,并且目标 ...
[NIO.2] 第二十篇 使用命令行创建链接
Windows 用户可以通过命令行的 mklink 命令来创建软链接或硬链接。这个命令有很多选项可用,部分选项列举如下:
/D 创建目录的软链接,默认创建的是文件软链接。
/H 创建硬链接。
/J 创建目录节点(Junction)。
Link 定义新的符号链接名。
Target 指定符号链接指向的文件路径(可以是 ...
[NIO.2] 第十九篇 软链接与硬链接
对于 Unix 用户(特别是管理员)来说,要非常熟悉链接的概念。链接分为两种:软链接(符号链接)和硬链接。如果你是 Windows 用户,可能对链接不是很熟悉,但是 Windows 系统却完全支持它们,尤其是软链接,在 Windows 中通常叫做快捷方式。
NIO.2 同时支持这两种链接,每个 Path 类的方法都能判断当前文件是否为链接,并且按你的要求做相应的处理。
链接简介
当你只通过文件名 ...
[NIO.2] 第十八篇 用户自定义属性视图
如果你发现 NIO.2 内置的属性视图不能满足你的要求,或者你想给文件设置某些特殊的属性,那么你可以使用自定义属性视图。NIO.2 提供了 UserDefinedFileAttr ...
[NIO.2] 第十七篇 读取文件存储设备的属性
如果将电脑看作文件存储的容器,那么有很多类型的文件存储,例如:分区、硬盘、卷标,等等。NIO.2 中可以通过 FileStore 这个抽象类来得到每种类型的文件存储信息。你可以获取文件存储的名字、类型、总空间、已用空间和剩余空间。
获得所有文件存储的属性
首先调用 FileSystems.getDefault() 方法获取默认文件系统,然后再调用 FileSystem.getFileStores ...
[NIO.2] 第十六篇 属性视图之 ACL View
一个访问控制列表(ACL)就是一组用来精确控制访问文件的权限列表。ACL 控制着文件所有者、权限、以及各种类型的文件标识。NIO.2 提供了 AclFileAttribute ...
[NIO.2] 第十五篇 属性视图之 POSIX View
对于 Unix 用户来说是个好消息!POSIX 视图扩展 Basic 视图并支持 Unix 及其它相关操作系统。POSIX 视图支持文件所有者、组拥有者、以及九个访问权限。
基于 PosixFileAttributes 类,可以通过下面的方式得到 POSIX 属性:
import java.io.IOException;
import java.nio.file.Files;
import ...
[NIO.2] 第十四篇 属性视图之 File Owner View
大多数文件系统都有文件所有者的概念,并且决定了访问文件系统对象的权限。在 NIO.2 中,提供了 UserPrincipal 接口来关联文件所有者这个概念,并且提供了 FileOwenerAttributeView 接口来设置和读取文件所有者。
注:在本文的例子中使用的文件所有者名称为“apress”,但是在你的系统上可能没有这个用户。运行测试代码的时候会抛出 java.nio.file.attr ...
[NIO.2] 第十三篇 属性视图之 DOS View
为了支持 DOS(或 Samba) 文件系统,DosFileAttributeView 属性视图扩展了 Basic 属性视图(意味着 DOS 属性视图是 Basic 属性视图的子类,可以直接访问父类的属性)。DOS 属性视图提供了四个属性,对应下面的四个方法:
isReadOnly(): 返回只读属性值(true 表示文件不能被删除或修改)
isHidden(): 返回文件是否隐藏的属性(true ...
[NIO.2] 第十一篇 判断文件系统所支持属性视图
在访问文件属性之前,需要确保文件系统支持你所使用的属性视图。NIO.2 中可以获取文件系统所支持的属性视图名称列表,也可以通过 FileStore 类来检验文件存储是否支持某个属性视图。
通过调用 FileSystems.getDefault() 可得到当前的默认文件系统,调用 FileSystem.supportedFileAttributeViews() 方法可得到文件系统支持的属性视图列表,例 ...
[NIO.2] 第十二篇 NIO.2 属性视图之 Basic View
大多数的文件系统都支持一些通用文件属性(文件大小、文件创建时间、最后访问时间、最后编辑时间、等等)。这些通用属性都被分组到 BasicFileAttrib ...
[NIO.2] 第十篇 NIO.2 中的文件属性
如果对于文件或目录还有疑问,例如文件是否隐藏、当前对象是文件还是目录、文件占用多少磁盘空间、文件拥有者是谁、等等。这一切问题都可以从文件元数据中得到。
NIO.2 中的元数据就是文件属性,并且提供了 java.nio.file.attribute 包来访问元数据。因为不同的文件系统有不同的文件属性,NIO.2 将这些属性通过视图(view)进行分组,每个视图都对应特定的文件系统。一般来说,视图的属 ...
[NIO.2] 第九篇 迭代 Path 对象中的所有元素名称
自从 Path 类实现了 Iterable 接口后,你就可以通过迭代的方法获取 Path 对象上的所有元素。下面是使用for 循环迭代 Path 对象的例子:
Path path = Paths.get("C:", "rafaelnadal/tournaments/2009", "BNP.txt");
for (Path nam ...
[NIO.2] 第八篇 比较两个 Path 对象
为了不同的目的,你可以使用不同的方式来比较两个 Path 对象是否相等。
首先,你可以调用 Path.equals() 方法来进行判断,这个方法遵守 Object.equals() 方 ...
[NIO.2] 第七篇 通过两个文件之间的关系构建 Path 对象
当你需要通过从一个文件位置到另一个文件位置构建 Path 对象的时候,你可以调用 relativize() 方法,这个方法将通过这两个位置之间的关系来构建 Path 对象。调用这个方法的 Path 对象称为原始路径,传入这个方法的 Path 对象称为传入路径。最后得到的 Path 对象是相对于原始路径的相对路径。为了更好地理解,下面用几个简单的例子来说明,假设有下面两个路径:
Path pat ...
[NIO.2] 第六篇 合并两个 Path 对象
合并两个 Path 对象可以方便你先定义一个根路径,然后再在后面添加其它的路径。当你需要使用公共路径的时候,这个功能相当有用。NIO.2 提供了 resolve() 方法来支持这个功能。下面看看例子:
//define the fixed path
Path base = Paths.get("C:/rafaelnadal/tournaments/2009");
...