这是为了熟悉文件操作而写的文件搜索器
1.实现文件搜索的具体实现
package 文件搜索器; import java.io.File; /** * 指定目录下的给定关键字的文件搜索 * * @author d.s */ public class fileSearcher { /** * 搜索方法 * * @param path给定的目录 * @param key关键字 */ public void Search(String path, String key) { File file = new File(path); // 如果给的路径正确 if (file.exists()) { if (file.isDirectory()) { if(file.getName().indexOf(key) != -1) //关键字在文件夹名中存在的话. System.out.println(file.getAbsolutePath()); File f[] = file.listFiles(); for(int i = 0;i<f.length;i++){ //递归搜索. Search(f[i].getAbsolutePath(),key); } } if(file.isFile()){ if(file.getName().indexOf(key) != -1) //关键字在文件名中存在的话. System.out.println(file.getAbsolutePath()); } } } }
2.界面
package 文件搜索器; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; /** * 界面 * @author d.s * */ public class fileSearcherUI extends JFrame{ public static void main(String args[]){ fileSearcherUI ui = new fileSearcherUI(); ui.showUI(); } public void showUI(){ this.setTitle("fileSearcher"); this.setSize(300,120); JLabel jl = new JLabel("指定目录:"); JTextField jf = new JTextField(20); JLabel jl1 = new JLabel(" 关键字:"); JTextField jf1 = new JTextField(20); //添加组建 this.add(jl); this.add(jf); this.add(jl1); this.add(jf1); JButton but = new JButton("搜索"); this.add(but); this.setLayout(new FlowLayout());//流体式布局 this.setLocationRelativeTo(null);//居中显示 this.setResizable(false);//不可改变大小 this.setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭时退出 this.setVisible(true);//显示界面 ActionListenerImpl l = new ActionListenerImpl(jf, jf1); but.addActionListener(l); } }
3.监听器
package 文件搜索器; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JTextField; public class ActionListenerImpl implements ActionListener{ private JTextField jf; private JTextField jf1; //获取文件指定的路径和关键字 public ActionListenerImpl(JTextField jf, JTextField jf1){ this.jf = jf; this.jf1 = jf1; } public void actionPerformed(ActionEvent e) { fileSearcher fs = new fileSearcher(); fs.Search(jf.getText(), jf1.getText()); } }