文件搜索器

文件搜索器是与File类有关的一个小工具,首先介绍一下File类的用法:File类位于java.io包中,可以通过File对象的方法创建文件对象,删除文件,列表目录下的文件,判断文件是目录还是正式文件,文件主要包括目录类型的文件和真实文件两种,不可能有同名的,目录包括相对目录和绝对目录。
文件搜索器,首先要有一个界面:
[img]http://dl.iteye.com/upload/attachment/0077/5757/99785915-516f-31cb-b0f9-9773896a5c9d.jpg[/img]
实现该界面的代码如下:
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.TextArea;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class FileSearch extends JFrame{

public static void main(String args[]){
FileSearch fs=new FileSearch();
fs.init();
}
public FileSearch(){
String[] menu={"C:\\","D:\\","E:\\","F:\\"};
//初始化下拉菜单
JComboBox jcb=new JComboBox(menu);
}

public void init(){
this.setTitle("文件搜索器");
this.setSize(500,400);
//设置窗口居中显示
this.setLocationRelativeTo(null);
//将窗口大小固定
this.setResizable(false);
//设置窗口不可改变大小
this.setDefaultCloseOperation(3);
this.setLayout(new FlowLayout(FlowLayout.CENTER));
JLabel key=new JLabel("关键字");
//输入框的长度
JTextField keyfield=new JTextField(15);
//新建一个名为搜索的按钮
JButton jb=new JButton("搜索");
JLabel path=new JLabel("路径");
JTextField pathfield=new JTextField(15);
//要搜索的内容显示框
TextArea display=new TextArea();
// display.append("111111");
//display.setEditable(false);
/**
* 给窗口添加组件
*/
//把名为文件的标签加到搜索器上
this.add(key);
this.add(keyfield);
//把按钮加到搜索器上
this.add(path);
this.add(pathfield);
this.add(jb);
//把文本加到搜索器上
this.add(display);
//滚动面板
JScrollPane pane=new JScrollPane();
//设置面板的大小
pane.setSize(new Dimension(400,250));
// this.add(pane);
FileListener filelistener=new FileListener(keyfield,pathfield,display);
jb.addMouseListener(filelistener);
this.setVisible(true);
}

}


然后再加一个文件搜索器的监听器,即可实现文件搜索器的功能,查找文件的功能主要是用递归的思想,代码如下:

import java.awt.TextArea;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;

import javax.swing.JTextField;

public class FileListener implements MouseListener {
private JTextField keyfield;
private JTextField pathfield;
private TextArea display;

// 构造方法(切记切记,构造方法无返回值)
public FileListener(JTextField keyfield, JTextField pathfield,
TextArea display) {
this.keyfield = keyfield;
this.pathfield = pathfield;
this.display = display;

}

public void mouseClicked(MouseEvent e) {
/**
* 鼠标单击时,得到输入框输入的内容
*/
String key = keyfield.getText();
String path = pathfield.getText();
System.out.println(key);
searchfile(key,path);
}

// 递归搜索文件
public void searchfile(String key,String path) {
File file = new File(path);
// 如果给的路径正确
if (file.exists()) {
if (file.isDirectory()) {

// if(file.getName().indexOf(key)!=1)
// 如果关键字在文件夹名中存在
// System.out.println(file.getAbsolutePath());
File fileArray[] = file.listFiles();
if(fileArray!=null){
for (int i = 0; i < fileArray.length; i++) {
// System.out.println(fileArray[i].getAbsolutePath());
searchfile(key,fileArray[i].getAbsolutePath());
}
}
}
if (file.isFile()) {
if (file.getName().indexOf(key) != -1)
// 关键字在文件名中存在
display.append(file.getAbsolutePath()+"\n");
//System.out.println(file.getAbsoluteFile()+"oooo");
}

}
}

public void mousePressed(MouseEvent e) {

}

public void mouseReleased(MouseEvent e) {

}

public void mouseEntered(MouseEvent e) {

}

public void mouseExited(MouseEvent e) {

}

}

一个搜索器就完成啦~~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值