关于文件搜索

         关于文件搜索

        突然感觉压力山大,原因是多方面的,最主要的是这两年来,都荒废了。

        最近,我参加了华信培训,期望能够提升我的动手能力,也非常感谢老师对我的淳淳教诲。

        前几天,老师给我们讲了一个关于文件搜索的问题。

        程序的功能为:根据输入的文件目录,查找文件名包含关键字的文件,并将其输出在一个特定的文本输入域中。

        在这次的设计中,程序主要由两个部分组成:一个UI界面设计与查询代码。

        UI界面主要有两个文本输入框、一个文本输入域及一个搜索按钮;查询代码主要是指查询方法query(String path,String key);在UI界面与出巡代码之间由动作监听器方法实现连接。

       文本输入域支持多行输出,两个文本输入框中,其中一个为文件目录path的输入,另一个为关键字key的输入,

      所有的东西都封装在一个FileSearch类中,由主方法实现调用。

      代码如下:

package com.huaxin.io;


import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;


import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;


/**
 * 文件搜索器
 */
public class FileSearch {
JTextField field_dir;
JTextField field_key;
JTextArea area_content;

//显示界面
public void showUI(){
//创建窗体对象
JFrame frame = new JFrame();
//设置相关属性
frame.setTitle("文件搜索神器");
frame.setSize(400,600);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(3);
//创建现形布局对象
FlowLayout layout = new FlowLayout();
frame.setLayout(layout);
//创建组件对象们
field_dir = new JTextField(15);
field_key = new JTextField(10);
JButton button_query = new JButton("搜索");
area_content = new JTextArea(20,30);
//添加到窗体
frame.add(field_dir);
frame.add(field_key);
frame.add(button_query);
frame.add(area_content);
//给搜索按钮添加动作监听器
button_query.addActionListener(action_listener);

//可见
frame.setVisible(true);
}

//创建动作监听器对象
ActionListener action_listener = new ActionListener(){
public void actionPerformed(ActionEvent e){
area_content.setText("");//清空
//得到用户输入的信息
String dir = field_dir.getText();
String key = field_key.getText();
//查询
query(dir,key);
}
};

/**
* 查询指定目录下的和key相关的所有文件
* @param path
*/
public void query(String path,String key){
//构造file
File file = new File(path);
//判断
if(file.exists()){
if(file.isFile()){//是文件
//将文件名显示到文本输入域中
area_content.append(file.getAbsolutePath()+"\r\n");
}else if(file.isDirectory()){//是文件夹
File[] files = file.listFiles();
//遍历
for(File f:files){
if(f.isFile()){
if(f.getName().contains(key)){
area_content.append(f.getAbsolutePath()+"\r\n");
}
}else if(f.isDirectory()){
query(f.getAbsolutePath(),key);//递归调用本身
}
}
}
}else{
System.out.println("输入的路径有误!");
}

}

public static void main(String[] args) {
FileSearch fs = new FileSearch();
fs.showUI();
}
}

执行的结果如下:



      在这次的课程中,许多以前忘记的知识点又重新闪现在我的脑海里,也学到了些新的知识,特别是那个动作监听器。好了,废话已经够多了,不说了!  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值