`
cucaracha
  • 浏览: 141845 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A8f3fa2f-18ce-3862-897a-5d2209197c90
Java NIO.2
浏览量:88157
7a076ba7-8ec8-3241-aa3c-67bb2f7856a2
Java EE 7 简明教...
浏览量:36825
社区版块
存档分类
最新评论
文章列表
如果有人问你“什么是 Java ?”,你可能会做出这样的回答“Java 就是 Java 语言、Java API、Java 字节码以及 Java 虚拟机的总称。” 好吧,这么说看起来也没什么错,不是吗? Java 一出现就举着“一次编码处处运行”的大旗,这也 ...
我们已经看过很多顺序读取文件的例子,文件除了可以被顺序读取,还可以被随机读取(random access files 简称 RAF)。通常来说,因为编码简单顺序读取文件更常用。随机读取文件更加灵活,并且读取数据更快。 使用 RAF 可以打开文件,跳转到文件中的某个位置,并在这个位置上进行读写操作。在打开 RAF 后,可以使用记录号来自由地读写文件,如果你知道文件的总记录号,你还可以在文件末尾添加内容。RAF 允许读取单个字符,多个字符,一行字符,替换部分文件,添加行,删除行等等操作。 NIO.2 引入了全新的接口来支持随机访问文件。接口名称为 SeekableByteChannel 放在 j ...
现在,我们编写一个应用来监控 C:\rafaelnadal 目录。此外,如果在这个目录中发生了 CREATE 事件创建了一个新目录,那么这个目录将会被立即注册,和 C:\rafaelnadal 中一开始就存在的目录一样。 首先,创建监控服务: private WatchService watchService = FileSystems.getDefault().newWatchService(); 然后,需要注册目录树的创建、删除和修改事件。稍微麻烦的一点是我们需要注册  C:\rafaelnadal 的所有子目录,而不仅仅只是一个目录。因此需要递归遍历所有子目录,并将其独立注册到监控 ...
要实现监控服务需要有几个步骤。在本文中,你将会看到实现监控服务的主要步骤,并且开发监控目录创建、删除和修改的应用。每个步骤都会有代码和实例进行讲解,文章的最后将会把所有步骤合在一起,编写一个完整的应用。 创建 WatchService 最开始,需要创建 WatchService 用于监控文件系统。可以调用 FileSystem.newWatchService() 方法来创建这个对象: WatchService watchService = FileSystems.getDefault().newWatchService(); 现在我们有了 WatchService 对象。 注册监控对象 ...
JSF 支持将 URL 参数映射到 EL。也支持生成 GET 友好的 URL 链接。 视图参数可用于将 URL 中的参数映射到 EL。要做到这一点只需添加类似下面的代码: <f:metadata> <f:viewParam name="name" value="#{user.name}"/> </f:metadata> 假设我们通过 index.xhtml?name=jack 访问页面: [list]     GET 请求参数名为 name。     转换和验证如果成功,那么参数将会成功绑定到 #{u ...
Java 7 NIO.2 引入了线程安全的监控服务,用于监控对象的改变和事件。大多数时候,用于监控目录和文件内容的改变,例如对目录中的文件进行增删改的操作。你可能已经见过这样的情况。当你在使用文本编辑器编辑文件的时候,如果你在文本编辑器的外部改变了文件的内容,那么文本编辑器会察觉到这个改变,并及时通知你。这就是系统的文件改变通知机制。NIO.2 开始提供了监控服务 API 来支持这个功能。 监控服务 API 是底层的 API。可以直接被使用也可以进行自定义。你甚至可基于它编写更高级的 API。默认情况下,此 API 依赖底层系统提供的功能来监控文件的改变。它允许你注册一个或多个文件夹被监控,在 ...
JSF 支持页面的 Ajax 处理。可以支持局部页面处理和局部页面展示。 JSF 中的 Ajax 通过下面两个途径:     通过 JavaScript 编码实现     通过 f:ajax 以声明方式实现 先看看使用 JavaScript 如何实现。 jsf.js 是在 javax.faces 库中的预 ...
移动文件分为两个步骤,先拷贝文件,再删除源文件。 下面的代码将会把  C:\rafaelnadal 目录中的内容移动到 C:\ATP\players\rafaelnafal 目录中。在移动前,要确保 C:\ATP\players\rafaelnafal 目录已经存在。在这个例子中,目录的移动使用了 Files.copy() 和 Files.delete() 方法,文件的移动使用了 Files.move() 方法。 import java.io.IOException; import java.nio.file.FileVisitOption; import java.nio.file ...
拷贝目录树的时候,需要为文件和目录递归调用 Files.copy() 方法。在开始编写代码之前,要注意以下几点: 在拷贝目录中的文件之前,必须先拷贝目录本身。不管目录中是否有文件,拷贝目录后的结果都将是空目录。这个任务必须在 preVisitDirectory() 中完成。 拷贝文件最好在 visitFile() 方法中进行。 在拷贝文件或目录的过程中,你要考虑是否需要使用 REPLACE_EXISTING 和 COPY_ATTRIBUTES 配置项。 如果你需要保留目录的属性,那么要等到文件拷贝完成后在 postVisitDirectory() 方法中进行操作。 如果你选择了使用目标文件处 ...
如果要删除单个文件,可以直接调用 delete() 或 deleteIfExists() 方法,它们会将文件从文件系统中删除。如果要删除目录树,则是通过  FileVisitor 的具体实现来递归调用 delete() 或 deleteIfExists() 方法。在开始之前,要注意以下原则:     在删除目录之前,要确保目录是空的。     删除文件最好在 visitFile() 方法中。     最好在  postVisitDirectory() 方法中删除目录。     如果文件不允许访问,那么 visitFileFailed() 方法需要返回 FileVisitResult.CONT ...
在 Java 中有效地使用泛型,一定要注意以下限制: 不能使用原始数据类型实例化泛型类 考虑下面的泛型类: class Pair<K, V> { private K key; private V value; public Pair(K key, V value) { this.key = key; this.value = v ...
JSF 定义了标准的请求处理声明周期。开发人员了解相关知识可以帮助理解例如验证、数据转换、事件处理等操作会在哪个阶段被执行。 JSF 页面通过 UI 组件树进行展示,称作视图(view)。当客户端发起页面请求后,生命周期开始。在整个生命周期过程中,JSF 需要根据之前保存的状态来生成页面。当客户端提交页面的时候,JSF 必须执行几个任务,比如验证视图组件中的输入数据、转换客户端输入的数据为服务端定义的类型、绑定数据到后台 bean。JSF 执行这些任务是通过生命周期中的几个步骤。 不同的应用程序组件都需要经过以下生命周期: 恢复视图 恢复和创建服务端组件树,用于展示客户端的 UI 信息。 ...
大多数操作系统都提供了独立的工具用于文件搜索(例如,Linux 上的 find 命令,Windows 上的文件搜索工具)。从简单到高级,这些工具提供的搜索模式都大同小异:用户提供搜索条件,等待搜索工具返回搜索结果。如果你想自己编写搜索程序,那么可以利用 FileVisitor 接口。你可以编写按文件名、按文件扩展名、按区域匹配、按文件内容来搜索文件的功能。 利用 FileVisitor 来编写搜索工具,需要明确以下几点:      visitFile() 是用于比较当前文件和搜索条件的最佳地方。在这里,你可以获取当前文件名、文件扩展名、文件属性或者打开文件读取文件内容。这个方法不会搜索目录 ...
一旦你创建了遍历机制(实现 FileVisitor 接口或继承 SimpleFileVisitor 类),那么就可以调用 Files.walkFileTree() 方法遍历目录树。首先我们定义遍历机制: class ListTree extends SimpleFileVisitor<Path> { @Override public FileVisitResult postVisitDirectory(Path dir, IOException exc) { System.out.println("Visited directo ...
文章来源:http://www.aptusource.org/2014/04/java-ee-7-jsf-composite-components/ 利用 Facelets 和资源处理的特性,JSF 定义了 Composite 组件,它是一个使用 Facelets 标签文件定义的组件,组件中可能包含了一组 JSF 组件。将这个定义 Composite 组件的 .xhtml 文件放到资源目录中。这样,你就可以在 JSF 页面中的任意地方使用这个可重用的组件了。 Composite 组件在“定义页面”中定义,在“使用页面”中使用。在定义页面中使用 <cc:interface> 定义元 ...
Global site tag (gtag.js) - Google Analytics