Java NIO.2
收藏

详细介绍 JSR203(More New I/O APIs for the Java Platform)规范。 从 Java 7 开始,可以使用 NIO.2 部分替换旧的 I/O 操作。

分享到: Sina Tec

最近更新文章

[NIO.2] 第四十一篇 随机访问文件概述

我们已经看过很多顺序读取文件的例子,文件除了可以被顺序读取,还可以被随机读取(random access files 简称 RAF)。通常来说,因为编码简单顺序读取文件更常用。随机读取文件更加灵活,并且读取数据更快。 使用 RAF 可以打开文件,跳转到文件中的某个位置,并在这个位置上进行读写操作。在打开 RAF 后,可以使用记录号来自由地读写文件,如果你知道文件的总记录号,你还可以在文件末尾添加内 ...
cucaracha 评论(0) 有1738人浏览 2014-04-29 14:51

[NIO.2] 第四十篇 监控目录树

现在,我们编写一个应用来监控 C:\rafaelnadal 目录。此外,如果在这个目录中发生了 CREATE 事件创建了一个新目录,那么这个目录将会被立即注册,和 C:\rafaelnadal 中一开始就存在的目录一样。 首先,创建监控服务: private WatchService watchService = FileSystems.getDefault().newWatchService( ...
cucaracha 评论(0) 有1968人浏览 2014-04-29 14:49

[NIO.2] 第三十九篇 实现文件监控服务

要实现监控服务需要有几个步骤。在本文中,你将会看到实现监控服务的主要步骤,并且开发监控目录创建、删除和修改的应用。每个步骤都会有代码和实例进行讲解,文章的最后将会把所有步骤合在一起,编写一个完整的应用。 创建 WatchService 最开始,需要创建 WatchService 用于监控文件系统。可以调用 FileSystem.newWatchService() 方法来创建这个对象: Watc ...
cucaracha 评论(0) 有3649人浏览 2014-04-26 16:13

[NIO.2] 第三十八篇 监控服务 API

Java 7 NIO.2 引入了线程安全的监控服务,用于监控对象的改变和事件。大多数时候,用于监控目录和文件内容的改变,例如对目录中的文件进行增删改的操作。你可能已经见过这样的情况。当你在使用文本编辑器编辑文件的时候,如果你在文本编辑器的外部改变了文件的内容,那么文本编辑器会察觉到这个改变,并及时通知你。这就是系统的文件改变通知机制。NIO.2 开始提供了监控服务 API 来支持这个功能。 监控服 ...
cucaracha 评论(0) 有1993人浏览 2014-04-21 14:13

[NIO.2] 第三十七篇 编写一个文件移动应用

移动文件分为两个步骤,先拷贝文件,再删除源文件。 下面的代码将会把  C:\rafaelnadal 目录中的内容移动到 C:\ATP\players\rafaelnafal 目录中。在移动前,要确保 C:\ATP\players\rafaelnafal 目录已经存在。在这个例子中,目录的移动使用了 Files.copy() 和 Files.delete() 方法,文件的移动使用了 Files.mo ...
cucaracha 评论(0) 有1305人浏览 2014-04-18 14:20

[NIO.2] 第三十六篇 编写一个文件拷贝应用

拷贝目录树的时候,需要为文件和目录递归调用 Files.copy() 方法。在开始编写代码之前,要注意以下几点: 在拷贝目录中的文件之前,必须先拷贝目录本身。不管目录中是否有文件,拷贝目录后的结果都将是空目录。这个任务必须在 preVisitDirectory() 中完成。 拷贝文件最好在 visitFile() 方法中进行。 在拷贝文件或目录的过程中,你要考虑是否需要使用 REPLACE_EX ...
cucaracha 评论(0) 有1395人浏览 2014-04-18 14:18

[NIO.2] 第三十五篇 编写一个文件删除应用

如果要删除单个文件,可以直接调用 delete() 或 deleteIfExists() 方法,它们会将文件从文件系统中删除。如果要删除目录树,则是通过  FileVisitor 的具体实现来递归调用 delete() 或 deleteIfExists() 方法。在开始之前,要注意以下原则:     在删除目录之前,要确保目录是空的。     删除文件最好在 visitFile() 方法中。   ...
cucaracha 评论(0) 有1835人浏览 2014-04-17 18:22

[NIO.2] 第三十四篇 编写一个文件搜索应用

大多数操作系统都提供了独立的工具用于文件搜索(例如,Linux 上的 find 命令,Windows 上的文件搜索工具)。从简单到高级,这些工具提供的搜索模式都大同小异:用户提供搜索条件,等待搜索工具返回搜索结果。如果你想自己编写搜索程序,那么可以利用 FileVisitor 接口。你可以编写按文件名、按文件扩展名、按区域匹配、按文件内容来搜索文件的功能。 利用 FileVisitor 来编写搜索 ...
cucaracha 评论(0) 有1412人浏览 2014-04-14 15:39

[NIO.2] 第三十三篇 遍历目录树

一旦你创建了遍历机制(实现 FileVisitor 接口或继承 SimpleFileVisitor 类),那么就可以调用 Files.walkFileTree() 方法遍历目录树。首先我们定义遍历机制: class ListTree extends SimpleFileVisitor<Path> { @Override public FileVisitResul ...
cucaracha 评论(0) 有2368人浏览 2014-04-14 15:35

[NIO.2] 第三十二篇 SimpleFileVisitor 类

要实现 FileVisitor 接口就要实现接口上的所有方法,但是你有可能只需要实现其中的一两个方法,因此这对于你来说会显得很麻烦。在这种情况下,你可以继承 SimpleFileVisitor 类,它是 FileVisitor 接口的一个实现。这样,你就仅仅只需要覆盖你需要的方法即可。 例如,你可能需要遍历目录树并打印所有目录的名字。要实现这个目标,只需要覆盖  postVisitDirector ...
cucaracha 评论(0) 有2010人浏览 2014-04-12 15:57

[NIO.2] 第三十一篇 FileVisitor 接口

FileVisitor 接口提供了递归遍历文件树的支持。这个接口上的方法表示了遍历过程中的关键过程,允许你在文件被访问、目录将被访问、目录已被访问、发生错误等等过程上进行控制;换句话说,这个接口在文件被访问前、访问中和访问后,以及产生错误的时候都有相应的钩子程序进行处理。 调用 FileVisitor 中的方法,会返回访问结果 FileVisitResult 对象值,用于决定当前操作完成后接下来该 ...
cucaracha 评论(0) 有3177人浏览 2014-04-12 15:53

[NIO.2] 第三十篇 递归操作简述

你可能知道,在编程中使用递归技术一直有争议,但是它的确简化了一些编程任务。简单来说,递归就是应用程序调用自身的过程。比如计算阶乘,计算费氏数列等都是非常著名的可用递归方式来完成的任务。下面看看一个计算阶乘(n!=1*2*3*4...*n)的例子,注意看程序如何调用自身: /** * Calculate the factorial of n (n! = 1 * 2 * 3 * … * n). ...
cucaracha 评论(0) 有1039人浏览 2014-04-12 15:46

[NIO.2] 第二十九篇 删除、复制、移动目录和文件

删除、拷贝和移动操作是最常见的文件操作。NIO.2 提供了独立的方法来支持这些操作。它们中的大部分都来自 Files 类。 删除文件和目录 NIO.2 提供了两个方法来删除文件和目录,分别是  Files.delete() 和 Files.deleteIfExits()。这两个方法都接受一个 Path 类型的参数用于指定删除对象。不同的是,Files.delete() 的返回值是 void,而 ...
cucaracha 评论(1) 有5276人浏览 2014-04-10 16:28

[NIO.2] 第二十八篇 创建临时目录和文件

临时目录是用于存储临时文件的目录。临时目录的位置依赖操作系统。在 Windows 中,临时目录通过 TEMP 环境变量定义,通常位置是  C:\Temp、%Windows%\Temp,或者根据每个用户放到  Local Settings\Temp。在 Linux/Unix 中,全局临时目录在 /tmp 和 /var/tmp。 创建临时目录 NIO.2 提供了  createTempDirecto ...
cucaracha 评论(0) 有4475人浏览 2014-04-09 13:59

[NIO.2] 第二十七篇 新建、读取和写出文件

对文件来说,可能最常用的操作就是创建、读取和写出。NIO.2 提供了丰富的方法来完成这些任务。本文从简单的小文件操作开始,最后以缓冲和非缓冲流的操作结束。 流分为输入流和输出流(可以输出到任何地方,比如硬盘或内存)。流支持不同类型的数据,比如字符串、字节、原始数据类型、本地化字符、对象等。使用非缓冲流,读和写的操作直接依赖底层文件系统,使用缓冲流,数据从内存的缓冲区读取,只有缓冲区空了之后才会调用 ...
cucaracha 评论(0) 有4129人浏览 2014-04-07 20:09

[NIO.2] 第二十六篇 创建目录以及列出目录内容

列出文件系统根目录 在 Java 6 中,获取根目录是通过 File 对象的数组。在 Java 7 中,NIO.2 提供了方法可以通过存放了 Path 对象的迭代器来获取。这个可迭代的对象通过下面的方式由 getRootDirectories() 方法获得: Iterable<Path> dirs = FileSystems.getDefault().getRootDirector ...
cucaracha 评论(0) 有2474人浏览 2014-04-07 12:14

[NIO.2] 第二十五篇 文件及目录的校验

在对文件或目录进行操作之前,可以先调用 Files 类上的一系列 isXXX 方法来对文件或目录进行校验。对文件先进行校验再操作可以避免产生一些不必要的 ...
cucaracha 评论(0) 有1843人浏览 2014-04-05 16:26

[NIO.2] 第二十四篇 定位链接所指向的目标文件位置

调用 Files.readSymbolicLink() 方法可以返回链接所指向的目标文件的 Path 对象。这个方法接受一个 Path 类型的参数,这个参数必须是一个链接,否则会抛出 NotLinkException 异常。 调用 Files.isSameFile() 方法可以判断链接和文件是否指向同一文件。 下面的例子中,链接为 rafael.nadal.6,目标文件是 C:\rafaelna ...
cucaracha 评论(0) 有1008人浏览 2014-04-03 18:30

[NIO.2] 第二十三篇 检验软链接

Path 对象可能表示文件或链接。如果 Path 对象指向软链接,可以调用 Files.isSymbolicLink() 方法来进行判断,这个方法接收一个 Path 类型的参数,并返回 boolean 值。下面的代码创建了一个名为 rafael.nadal.5 的软链接,并指向 C:\rafaelnadal\photos\rafa_winner.jpg 文件,随后校验了 Path 对象。 … ...
cucaracha 评论(0) 有1708人浏览 2014-04-03 12:12

[NIO.2] 第二十二篇 创建硬链接

可以调用 createLink() 方法创建硬链接,它将会创建已存在文件的硬链接。这个方法返回新链接的 Path 对象,你可以使用这个 Path 对象来访问文件。 如果你的文件系统不支持硬链接,那么将会抛出 UnsupportedOperationException 异常。另外,要记住,硬链接只能为已存在的文件创建。 下面的代码演示了如何创建一个硬链接,名为 rafael.nadal.4 目标文 ...
cucaracha 评论(0) 有1878人浏览 2014-04-03 00:11
  • 专栏创建者:cucaracha
  • 创建时间:2014-03-27 21:11:59
  • 专栏文章数:41篇
  • 专栏被浏览:85527 次

本专栏热门文章

最新评论

不错,还没注意java 7已经增加了这么多类了
freesea 评论了 [NIO.2] 第十篇 NIO.2 中的文件属性
有个问题,想请教一下楼主:在代码中经常看到try catch语句: try (InputStream ...
SpringJava 评论了 [NIO.2] 第二十九篇 删除、复制、移动目录 ...
jahu 写道cucaracha 写道jahu 写道cucaracha 写道jahu 写道不知所然,N ...
cucaracha 评论了 [NIO.2] 第十篇 NIO.2 中的文件属性
cucaracha 写道jahu 写道cucaracha 写道jahu 写道不知所然,NIO.2 系列 ...
jahu 评论了 [NIO.2] 第十篇 NIO.2 中的文件属性
jahu 写道cucaracha 写道jahu 写道不知所然,NIO.2 系列请参考前后博文。看完了, ...
cucaracha 评论了 [NIO.2] 第十篇 NIO.2 中的文件属性
cucaracha 写道jahu 写道不知所然,NIO.2 系列请参考前后博文。看完了,,还没看明白你 ...
jahu 评论了 [NIO.2] 第十篇 NIO.2 中的文件属性
jahu 写道不知所然,NIO.2 系列请参考前后博文。
cucaracha 评论了 [NIO.2] 第十篇 NIO.2 中的文件属性
不知所然,
jahu 评论了 [NIO.2] 第十篇 NIO.2 中的文件属性
Global site tag (gtag.js) - Google Analytics