首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

资料搜索器的总结

2012-12-19 
文件搜索器的总结最近在学习了文件对象的部分内容之后,掌握了对磁盘上文件的遍历,做了一个文件搜索器。1.功

文件搜索器的总结

最近在学习了文件对象的部分内容之后,掌握了对磁盘上文件的遍历,做了一个文件搜索器。

1.功能说明:

?? 实现了通过输入文件名(带扩展名)对磁盘上所有待搜索的真实文件的搜索,以及对所有搜索结果的统计。

2.图片展示:

?
资料搜索器的总结

3.技术分析:

? (1).使用了Swing组件里的菜单,使界面更为简洁.

??

// 加入菜单栏javax.swing.JMenuBar jmb = new javax.swing.JMenuBar();javax.swing.JMenu jm = new javax.swing.JMenu("控制");javax.swing.JMenuItem item = new javax.swing.JMenuItem("开始");

? (2).搜索功能的实现主要是对所选磁盘上的所有文件进行遍历,然后用其中的真实文件的名字与输入的名字比较,相同就输出到输出框上,其中对磁盘遍历是采用了递归的算法,具体代码如下:

??

package yfr.Fsearch315;import java.awt.FlowLayout;import java.io.File;import javax.swing.JFrame;/** * 文件搜索器界面类 * @author Administrator * */public class SearchUI extends JFrame {public static javax.swing.JTextField txt;public static javax.swing.JTextArea result;public static int count = 0;private String[] root ;public static javax.swing.JComboBox jcom ;public static void main(String[] args) {SearchUI UI = new SearchUI();UI.showUI();}/** * 显示界面的方法 */public void showUI() {// 设置窗体属性this.setTitle("Files Searching");this.setSize(300, 320);this.setDefaultCloseOperation(3);this.setResizable(false);// 设置布局管理器FlowLayout fl = new FlowLayout();this.setLayout(fl);// 加入菜单栏javax.swing.JMenuBar jmb = new javax.swing.JMenuBar();javax.swing.JMenu jm = new javax.swing.JMenu("控制");javax.swing.JMenuItem item = new javax.swing.JMenuItem("开始");this.setJMenuBar(jmb);jmb.add(jm);jm.add(item);// 创建3个JLabel 用以提示用户javax.swing.JLabel lab1 = new javax.swing.JLabel("输入 ");javax.swing.JLabel lab2 = new javax.swing.JLabel("输出 ");javax.swing.JLabel lab3 = new javax.swing.JLabel("请选择盘符 ");// 创建文本框,用来输入文件名this.add(lab1);txt = new javax.swing.JTextField(20);this.add(txt);// 创建文本框,用来打印搜索结果this.add(lab2);result = new javax.swing.JTextArea(10, 20);result.setEditable(true);result.setBackground(java.awt.Color.white);//创建一个滚动条对象javax.swing.JScrollPane spn = new javax.swing.JScrollPane(result);this.add(spn);//this.add(result);//创建一个面板对象javax.swing.JPanel select = new javax.swing.JPanel();java.awt.Dimension dim = new java.awt.Dimension(100,20);this.add(select);listroot();jcom = new javax.swing.JComboBox(root);select.add(lab3);select.add(jcom);// 设置可见this.setVisible(true);// 创建一个搜索监听器SearchListener slis = new SearchListener();// 给菜单选项加上监听器item.addActionListener(slis);//给下拉框加上监听器jcom.addActionListener(slis);}/** * 获得机器的所有盘符 */public void listroot(){final int rootnumber;//机器的盘符数File opp = new File("");File[] rootlist = opp.listRoots();rootnumber = rootlist.length;root = new String[rootnumber];for(int i=0;i<rootlist.length;i++){this.root[i] = rootlist[i].getAbsolutePath();}for(int i=0;i<rootlist.length;i++){System.out.println(root[i]);}}}

?

package yfr.Fsearch315;import java.awt.event.ActionEvent;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.io.File;/** * 文件搜索器的监听器类 * @author Administrator * */public class SearchListener implements java.awt.event.ActionListener{private String name;private String root="C:\";@Overridepublic void actionPerformed(ActionEvent e) {this.name = SearchUI.txt.getText();this.root = (String)SearchUI.jcom.getSelectedItem();System.out.println(root);SearchUI.count = 0;if(e.getActionCommand().equals("开始")){//listroot();File opp = new File(root);seek(opp);SearchUI.result.append("共找到"+SearchUI.count+"个文件!");}}/** * 获得系统根目录,并在每个根目录下搜索名为name的文件 * @param s * @return 每个名为name的文件的绝对路径 *//*private void listroot(){//获得所有系统的根目录File[] fs = opp.listRoots();for(int i=0;i<fs.length;i++){seek(fs[i]);}}*//** * 搜索文件的方法 */private void seek(File opp){File[] files = opp.listFiles();if(files==null||files.length==0)return;for(int i=0;i<files.length;i++){if(files[i].isDirectory()){seek(files[i]);}else if(files[i].isFile()&&(files[i].getName().equals(this.name))){System.out.println(files[i].getAbsolutePath());SearchUI.result.append(files[i].getAbsolutePath()+"\r\n");SearchUI.count++;}}return;}}

?

?

?? 4.待解决的问题:

??????(1).目前还是只能在某个磁盘上进行搜索,还不能具体选择某个文件夹进行搜索。

????? (2).还不能实现搜索过程的暂停。

?

?

热点排行