| 
 
| 复制代码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.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class FileSearchFrame extends JFrame{
        //添加标签
        private JLabel lab1 = new JLabel("目录:");
        //路径文本框
        private JTextField txtPath = new JTextField();
        
        //标签
        private JLabel lab2 = new JLabel("关键字:");
        //关键字文本框
        private JTextField txtKey = new JTextField();
        
        //结果标签
        //按钮
        private JLabel labResult = new JLabel();
        JButton butSearch = new JButton("搜索");
        
        //文本域
        JTextArea txtResult = new JTextArea();
        
        //定义文件/文件夹记数字
        int dirCount = 0;
        int fileCount = 0;
        
        public FileSearchFrame(){
                init();
                addComponent();
        }
        
        private void init(){
                
                //设置窗体大小不可变
                this.setResizable(false);
                //设置大小
                this.setSize(650,440);
                //设置标题
                this.setTitle("文件搜索");
                //设置居中
                FrameTools.centerFrame(this);
                //设置布局
                this.setLayout(null);
                //设置关闭动作
                this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        }
        
        private void addComponent() {
                lab1.setBounds(30, 30, 80, 25);
                this.add(lab1);
                
                txtPath.setBounds(70, 30, 300, 25);
                this.add(txtPath);
                lab2.setBounds(390, 30, 80, 25);
                this.add(lab2);
                
                txtKey.setBounds(440, 30, 100, 25);
                this.add(txtKey);
                butSearch.setBounds(570, 30, 60, 25);
                butSearch.addActionListener(new ActionListener(){
                        @Override
                        public void actionPerformed(ActionEvent e) {
                                butSearchClick();
                        }
                });
                this.add(butSearch);
                //JScrollPane
                JScrollPane scrollPane = new JScrollPane();
                scrollPane.setBounds(30, 70, 600, 300);
                //搜索结果文本域
                scrollPane.setViewportView(txtResult);
                this.add(scrollPane);
                
                //标签
                this.labResult.setBounds(30, 380, 600, 25);
                this.add(labResult);
                
        }
        
        //点击搜索按钮方法
        private void butSearchClick(){
                //获取目录
                String dirPath = txtPath.getText();
                File dir = new File(dirPath);
                
                //判断目录是否存在
                if(!dir.exists()){
                        //为用户提示您输入的文件夹不存在,请仔细检查
                        JOptionPane.showMessageDialog(this, "您输入的文件夹不存在,请仔细检查","信息有误",JOptionPane.ERROR_MESSAGE);
                        return;
                }
                
                //判断是否是文件夹
                if(!dir.isDirectory()){
                        //为用户提示您输入的不是文件夹,请仔细检查
                        JOptionPane.showMessageDialog(this, "您输入的不是文件夹,请仔细检查!","信息有误",JOptionPane.ERROR_MESSAGE);
                        return;
                }
                
                //获取关键字
                String key = txtKey.getText();
                //判断关键字是否已输入
                if(key.trim().equals("")){
                        //为用户提示请输入关键字
                        
                        JOptionPane.showMessageDialog(this, "请输入关键字!","信息有误",JOptionPane.ERROR_MESSAGE);
                        return;
                }
                
                //调用方法,将指定文件夹中包含关键字的文件或文件夹放到主窗口文本域
                searchFile(dir,key);
                
                //设置结果JLabel
                labResult.setText("目录:" + dirCount + "个    文件:" + fileCount + "个");
                
        }
            //搜索文件--递归方法
                //将指定文件夹中包含关键字的文件或文件夹放到主窗口文本域
                //将符合条件的文件或文件夹个数进行统计
        
        private void searchFile(File dir, String key){
                
                //获取该文件夹下所有的文件对象(文件夹与文件)
                File[] filesorDirs = dir.listFiles();
                
                //遍历数组,依次获取每一个文件对象
                for(File fileorDir : filesorDirs){
                        //如果是文件
                        if(fileorDir.isFile()){
                                //进行文件处理
                                //获取文件名
                                String fileName = fileorDir.getName();
                                //判断文件名是否包含
                                if(fileName.contains(key)){
                                        //将符合条件的文件数+1
                                        fileCount++;
                                        //如果包含,将文件的绝对路径打印到文本域
                                        String fileAbsPath = fileorDir.getAbsolutePath();
                                        txtResult.append(fileAbsPath+"\r\n");
                                        
                                }
                        }
                        
                        //如果是文件夹
                        if(fileorDir.isDirectory()){
                                //判断文件名是否包含
                                if(fileorDir.getName().contains(key)){
                                        //将符合条件的文件夹数+1
                                        dirCount++;
                                        //如果包含,就将文件夹的绝对路径打印到文本域
                                        String fileAbsPath = fileorDir.getAbsolutePath();
                                        //向文本域中追加内容
                                        txtResult.append(fileAbsPath + "\r\n");
                                }
                                
                                //进行文件夹处理
                                searchFile(fileorDir,key);
                                
                        }
                }
                
        }
        
                
        public static void main(String[] args) {
                new FileSearchFrame().setVisible(true);
        }
        
                
}
 | 
 |