Java 7 NIO.2 实现文件系统监视
现在我们对需要考虑的问题进行以下概括:
每日构建的安装版本,往往在打包的时候,缺少一些文件,类库等等,在优化升级打包流程的时候更容易出现这些问题。Java 7 NIO.2 新特性可以帮助我们监视安装过程中的文件系统变化,从而解决这些问题。
为实现文件变更监视服务,我们需要完成以下工作:
现在来探讨如何把 Java 7 的 NIO.2 新特性用于安装测试。需要完成的任务有以下几点:
1. 如何利用文件监视新特性生成文件变更清单:
以安装测试的一个实际例子来演示如何使用文件监视新特性生成文件变更清单。下文会详细解释如何监视安装过程中文件系统的变化,监视安装完成之后会得到文件变更清单。
2. 备份变更的文件并进行比对:
利用 Java 7 中 File I/O API 读取文件变更清单,然后把新增的、修改过的等文件复制到一个新的目录下进行备份。备份之后我们可以和基准版本进行比对,来评估安装目录文件系统差异。
?
上文源码中,cast(Event event) 方法用来避免如下异常:
?
现在我们已经知道需要复制的源文件,下面来看如何进行复制备份。首先得到源文件相对于监视目录的相对路径 relativePath。再得到备份目录 backDir,该目录由监视目录 +“_backup”+ 复制时时间戳组成。变更文件会被复制到这个备份目录下。然后根据 relativePath 和 backDir 目录,得到目标文件的路径。如果目标文件的父目录不存在,程序会自动创建父目录,然后再执行复制备份操作。如果目标文件或者文件夹已经存在,跳过复制,不需要再次操作。在例子中,如果源文件为 C:\Modeler\14.2\Demos\,那么目标文件路径为 C:\Modeler\14.2_backup_20110612_14_05 \Demos\。代码见清单 6。
清单 6. 复制操作方法
?
总结
通过上面的介绍,我们了解到如何基于 Java 7 新特性实现对安装过程进行监视,通过评估安装目录的差异,尽早发现软件质量问题。