博客专栏 -凯发k8国际

java nio.2

详细介绍 jsr203(more new i/o apis for the java platform)规范。 从 java 7 开始,可以使用 nio.2 部分替换旧的 i/o 操作。

分享到:

最近更新文章

我们已经看过很多顺序读取文件的例子,文件除了可以被顺序读取,还可以被随机读取(random access files 简称 raf)。通常来说,因为编码简单顺序读取文件更常用。随机读取文件更加灵活,并且读取数据更快。 使用 raf 可以打开文件,跳转到文件中的某个位置,并在这个位置上进行读写操作。在打开 raf 后,可以使用记录号来自由地读写文件,如果你知道文件的总记录号,你还可以在文件末尾添加内 ...
 
有1716人浏览 2014-04-29 14:51
现在,我们编写一个应用来监控 c:\rafaelnadal 目录。此外,如果在这个目录中发生了 create 事件创建了一个新目录,那么这个目录将会被立即注册,和 c:\rafaelnadal 中一开始就存在的目录一样。 首先,创建监控服务: private watchservice watchservice = filesystems.getdefault().newwatchservice( ...
有1945人浏览 2014-04-29 14:49
要实现监控服务需要有几个步骤。在本文中,你将会看到实现监控服务的主要步骤,并且开发监控目录创建、删除和修改的应用。每个步骤都会有代码和实例进行讲解,文章的最后将会把所有步骤合在一起,编写一个完整的应用。 创建 watchservice 最开始,需要创建 watchservice 用于监控文件系统。可以调用 filesystem.newwatchservice() 方法来创建这个对象: watc ...
有3627人浏览 2014-04-26 16:13
java 7 nio.2 引入了线程安全的监控服务,用于监控对象的改变和事件。大多数时候,用于监控目录和文件内容的改变,例如对目录中的文件进行增删改的操作。你可能已经见过这样的情况。当你在使用文本编辑器编辑文件的时候,如果你在文本编辑器的外部改变了文件的内容,那么文本编辑器会察觉到这个改变,并及时通知你。这就是系统的文件改变通知机制。nio.2 开始提供了监控服务 api 来支持这个功能。 监控服 ...
有1975人浏览 2014-04-21 14:13
移动文件分为两个步骤,先拷贝文件,再删除源文件。 下面的代码将会把  c:\rafaelnadal 目录中的内容移动到 c:\atp\players\rafaelnafal 目录中。在移动前,要确保 c:\atp\players\rafaelnafal 目录已经存在。在这个例子中,目录的移动使用了 files.copy() 和 files.delete() 方法,文件的移动使用了 files.mo ...
有1283人浏览 2014-04-18 14:20
拷贝目录树的时候,需要为文件和目录递归调用 files.copy() 方法。在开始编写代码之前,要注意以下几点: 在拷贝目录中的文件之前,必须先拷贝目录本身。不管目录中是否有文件,拷贝目录后的结果都将是空目录。这个任务必须在 previsitdirectory() 中完成。 拷贝文件最好在 visitfile() 方法中进行。 在拷贝文件或目录的过程中,你要考虑是否需要使用 replace_ex ...
有1371人浏览 2014-04-18 14:18
如果要删除单个文件,可以直接调用 delete() 或 deleteifexists() 方法,它们会将文件从文件系统中删除。如果要删除目录树,则是通过  filevisitor 的具体实现来递归调用 delete() 或 deleteifexists() 方法。在开始之前,要注意以下原则:     在删除目录之前,要确保目录是空的。     删除文件最好在 visitfile() 方法中。   ...
有1817人浏览 2014-04-17 18:22
大多数操作系统都提供了独立的工具用于文件搜索(例如,linux 上的 find 命令,windows 上的文件搜索工具)。从简单到高级,这些工具提供的搜索模式都大同小异:用户提供搜索条件,等待搜索工具返回搜索结果。如果你想自己编写搜索程序,那么可以利用 filevisitor 接口。你可以编写按文件名、按文件扩展名、按区域匹配、按文件内容来搜索文件的功能。 利用 filevisitor 来编写搜索 ...
有1387人浏览 2014-04-14 15:39
一旦你创建了遍历机制(实现 filevisitor 接口或继承 simplefilevisitor 类),那么就可以调用 files.walkfiletree() 方法遍历目录树。首先我们定义遍历机制: class listtree extends simplefilevisitor { @override public filevisitresul ...
有2347人浏览 2014-04-14 15:35
要实现 filevisitor 接口就要实现接口上的所有方法,但是你有可能只需要实现其中的一两个方法,因此这对于你来说会显得很麻烦。在这种情况下,你可以继承 simplefilevisitor 类,它是 filevisitor 接口的一个实现。这样,你就仅仅只需要覆盖你需要的方法即可。 例如,你可能需要遍历目录树并打印所有目录的名字。要实现这个目标,只需要覆盖  postvisitdirector ...
有1995人浏览 2014-04-12 15:57
filevisitor 接口提供了递归遍历文件树的支持。这个接口上的方法表示了遍历过程中的关键过程,允许你在文件被访问、目录将被访问、目录已被访问、发生错误等等过程上进行控制;换句话说,这个接口在文件被访问前、访问中和访问后,以及产生错误的时候都有相应的钩子程序进行处理。 调用 filevisitor 中的方法,会返回访问结果 filevisitresult 对象值,用于决定当前操作完成后接下来该 ...
有3156人浏览 2014-04-12 15:53
你可能知道,在编程中使用递归技术一直有争议,但是它的确简化了一些编程任务。简单来说,递归就是应用程序调用自身的过程。比如计算阶乘,计算费氏数列等都是非常著名的可用递归方式来完成的任务。下面看看一个计算阶乘(n!=1*2*3*4...*n)的例子,注意看程序如何调用自身: /** * calculate the factorial of n (n! = 1 * 2 * 3 * … * n). ...
有1017人浏览 2014-04-12 15:46
删除、拷贝和移动操作是最常见的文件操作。nio.2 提供了独立的方法来支持这些操作。它们中的大部分都来自 files 类。 删除文件和目录 nio.2 提供了两个方法来删除文件和目录,分别是  files.delete() 和 files.deleteifexits()。这两个方法都接受一个 path 类型的参数用于指定删除对象。不同的是,files.delete() 的返回值是 void,而 ...
有5256人浏览 2014-04-10 16:28
临时目录是用于存储临时文件的目录。临时目录的位置依赖操作系统。在 windows 中,临时目录通过 temp 环境变量定义,通常位置是  c:\temp、%windows%\temp,或者根据每个用户放到  local settings\temp。在 linux/unix 中,全局临时目录在 /tmp 和 /var/tmp。 创建临时目录 nio.2 提供了  createtempdirecto ...
有4449人浏览 2014-04-09 13:59
对文件来说,可能最常用的操作就是创建、读取和写出。nio.2 提供了丰富的方法来完成这些任务。本文从简单的小文件操作开始,最后以缓冲和非缓冲流的操作结束。 流分为输入流和输出流(可以输出到任何地方,比如硬盘或内存)。流支持不同类型的数据,比如字符串、字节、原始数据类型、本地化字符、对象等。使用非缓冲流,读和写的操作直接依赖底层文件系统,使用缓冲流,数据从内存的缓冲区读取,只有缓冲区空了之后才会调用 ...
有4109人浏览 2014-04-07 20:09
列出文件系统根目录 在 java 6 中,获取根目录是通过 file 对象的数组。在 java 7 中,nio.2 提供了方法可以通过存放了 path 对象的迭代器来获取。这个可迭代的对象通过下面的方式由 getrootdirectories() 方法获得: iterable dirs = filesystems.getdefault().getrootdirector ...
有2460人浏览 2014-04-07 12:14
在对文件或目录进行操作之前,可以先调用 files 类上的一系列 isxxx 方法来对文件或目录进行校验。对文件先进行校验再操作可以避免产生一些不必要的� ...
 
有1824人浏览 2014-04-05 16:26
调用 files.readsymboliclink() 方法可以返回链接所指向的目标文件的 path 对象。这个方法接受一个 path 类型的参数,这个参数必须是一个链接,否则会抛出 notlinkexception 异常。 调用 files.issamefile() 方法可以判断链接和文件是否指向同一文件。 下面的例子中,链接为 rafael.nadal.6,目标文件是 c:\rafaelna ...
有991人浏览 2014-04-03 18:30
path 对象可能表示文件或链接。如果 path 对象指向软链接,可以调用 files.issymboliclink() 方法来进行判断,这个方法接收一个 path 类型的参数,并返回 boolean 值。下面的代码创建了一个名为 rafael.nadal.5 的软链接,并指向 c:\rafaelnadal\photos\rafa_winner.jpg 文件,随后校验了 path 对象。 … ...
有1694人浏览 2014-04-03 12:12
可以调用 createlink() 方法创建硬链接,它将会创建已存在文件的硬链接。这个方法返回新链接的 path 对象,你可以使用这个 path 对象来访问文件。 如果你的文件系统不支持硬链接,那么将会抛出 unsupportedoperationexception 异常。另外,要记住,硬链接只能为已存在的文件创建。 下面的代码演示了如何创建一个硬链接,名为 rafael.nadal.4 目标文 ...
有1865人浏览 2014-04-03 00:11
  • 专栏创建者:
  • 创建时间:2014-03-27 21:11:59
  • 专栏文章数:41篇
  • 专栏被浏览:84777 次

本专栏热门文章

最新评论

不错,还没注意java 7已经增加了这么多类了
freesea 评论了
有个问题,想请教一下楼主:在代码中经常看到try catch语句: try (inputstream ...
springjava 评论了
jahu 写道cucaracha 写道jahu 写道cucaracha 写道jahu 写道不知所然,n ...
cucaracha 评论了
cucaracha 写道jahu 写道cucaracha 写道jahu 写道不知所然,nio.2 系列 ...
jahu 评论了
jahu 写道cucaracha 写道jahu 写道不知所然,nio.2 系列请参考前后博文。看完了, ...
cucaracha 评论了
cucaracha 写道jahu 写道不知所然,nio.2 系列请参考前后博文。看完了,,还没看明白你 ...
jahu 评论了
jahu 写道不知所然,nio.2 系列请参考前后博文。
cucaracha 评论了
不知所然,
jahu 评论了
global site tag (gtag.js) - google analytics
网站地图