`
cucaracha
  • 浏览: 137676 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A8f3fa2f-18ce-3862-897a-5d2209197c90
Java NIO.2
浏览量:85814
7a076ba7-8ec8-3241-aa3c-67bb2f7856a2
Java EE 7 简明教...
浏览量:35650
社区版块
存档分类
最新评论
文章列表

什么是 Java ?

如果有人问你“什么是 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