一开始感觉文件的搜索应该不难,只要找到匹配的字符就可以,可是实践起来,却并不如此。
例如,要实现上图的功能,要先做出界面来,在界面中添加组件,采用流式布局就可。其中关键字和路径这两个标识,用Label。其代码如下
Label label_key = new Label("关键字");
然后是后面的文本框
f1 = new TextField("",10); 其中第二个参数代表的是文本框有多少列。
最后是一个文本域
TextArea f3 = new TextArea(null,15,60); 其中三个参数表指定的文本,以及指定的行数和列数。其中null可以用“”替代。
接下来就是所有候选文件的找出。自定义一个方法,此方法返回文件的数目count,方法里面具体实现如下
file = new File(path);
//判断是否是文件或目录
if(file.isFile()){
count++;
list.add(file.getName());
}else if(file.isDirectory()){
File[] files = file.listFiles();
for(int i=0;i<files.length;i++){
count += query(files[i].getAbsolutePath());
}
}
其中list为一个自定义的队列,用来保存文件的名称。
然后就是关键字与文件名曲匹配,系统提供了contains方法,这个方法自己去查API。
最后把匹配的结果放到文本域中去,但是如果调用文本的setText方法的话,会只输出一个文件,而且是你最后找到的文件,这是因为它后面的文件名讳覆盖前面的文件名
这样我们可以使用append方法,这是一个追加方法,直接追加到文本的后面,这样后面的文件名就不会把前面的文件名覆盖。但是注意,此方法传递 null
或不一致的参数是无效的,并且将导致不确定的行为。
,还有就是,在文本域中,文件名需要换行。Java中提供的回车换行符是:\r\n。
这样一个简易的文件搜索器就做出来了。