实验VIII 万能文件搜索系统
一、实验要求
1. 深入掌握File类。
2. 深入掌握流的使用,特别是文件字节输入/输出流、文件字符读/写流。
3. 学会使用函数递归的方式完成复杂的功能。
4. 具体要求:用Java编写一个文件搜索系统,搜索条件在配置文件中。配置文件可以存放在任何位置;待搜索的文件夹可以是磁盘上的任何文件夹。
(1) 配置文件语法。配置文件是对搜索条件的陈述,一个配置文件由4种类型的语句构成,这4种类型语句的关键字分别是:文件名含、后缀名是、文件长度、内容包含。
(2) 每条语句都是“关键字+[内容]”的形式。每条语句占有一行,没有多余的空白。
(3) 语句可以有任意多条,也可以没有。所有语句都是“并”的关系,也就是说,一个文件必须全部满足所有语句给出的关系,这个文件才能被选中。
(4) 任何语句后面的中括号可以为空。当中括号中没有内容时,表明这个条件不起作用,任何文件都满足这个条件。
(5) 关键字“文件名含”的含义是文件的名字中含有给出的字符串,字符串在中括号中。中括号中只有一个字符串。
(6) 关键字“后缀名是”的含义是文件的扩展名必须是给出的扩展名序列中的一个。中括号中的扩展名可以是一个,也可以是多个。当扩展名是多个的时候,用符号“/”分割。
(7) 关键字“文件长度”的含义是文件的长度必须在给定的范围之中。后面的中括号中要么为空,要么有两个整数,中间用英文的逗号分割。这两个整数表明文件长度的下界和商界。下界不能超过上界。当下界<=文件长度<=上界时,文件才满足条件。
(8) 关键字“内容包含”的含义是文件的字节序列(任何文件都是字节序列)中包含给定的连续子列。中括号中要么为空,要么为一列整数,整数用空格分割。所有的整数必须在区间[-128,127]中。
(9) 系统运行后,先通过输入配置文件路径设定文件搜索条件,然后输入待搜索的文件夹。系统根据配置文件信息把待搜索的文件夹下所有的符合条件的文件列出来。
(10) 要求系统能够一次接收配置文件信息,任意多次搜索不断输入的文件夹,用户输入finish结束搜索。
例如,如果一个配置文件的内容是(每一行前面都没有空白):
文件名含[i]
后缀名是[alpha/pi/gamma]
文件长度[]
内容包含[]
文件名含[r]
内容包含[-127 -126 -125]
则表明,一个文件要被选中,必须满足如下条件:(a)这个文件名中包含字符串“i”;(b)这个文件的后缀是alpha、pi或gamma;(c)文件长度不限;(d)文件包含的内容不限;(e)文件名必须包含字符串“r”;(f)文件内容中必须包含连续的字节序列[-127 -126 -125]。
为了方便编程和测试,随着实验指导书有一个文件夹test。该文件夹下有工具文件“ByteOperation.jar”。在安装了Java虚拟机的机器上双击该文件可以运行,这个软件的主要功能是查看一个文件的字节序列,或修改一个文件的字节序列。文件夹test下有一个config子文件夹,其中存放了两个文件config1.txt和config2.txt,供测试使用。
文件夹test及其下所有文件和文件夹打包成压缩文件“Java实验8辅助文件”。二、实验内容和步骤
1.用记事本书写一个Java程序
(1)、建立个人子目录
步骤1:建立个人子目录
步骤2:建立Java源代码文件
在所建立的文件夹下建立一个记事本文件AlmightyFileSearch.txt,并把它重命名为AlmightyFileSearch.java
(2)、编写源代码
步骤1:把创建一个公共类AlmightyFileSearch:
public class AlmightyFileSearch {   }
步骤2:编写AlmightyFileSearch类的方法:
包括解析配置文件,整理约束条件、匹配文件,递归搜索文件夹等。
步骤3:编写main()方法:
main()方法负责接收配置文件信息,不断接收待搜索的文件夹信息。2.调试和运行
(1)、调试
步骤1:使用命令行工具,先进入用所建的目录下,为了进入目录方便,可以把源代码拷贝至根目录下再进行操作。参见测试数据。
步骤2:用javac AlmightyFileSearch.java编译并调试源代码文件。
(2)、运行
使用java AlmightyFileSearch  运行程序。参见图1测试数据。