本文共 3903 字,大约阅读时间需要 13 分钟。
import javax.swing.*;import java.awt.*;import java.io.*;public class Frame_Thread_File { public static void main(String[] args) { //初始化线程 EventQueue.invokeLater(() -> new MyFrame().setVisible(true)); } //界面类 /** * 1.输入框{ * 输入1.项目目录 * 2.查找范围(文件名关键字) * 3.内容关键字 * } * 2.搜索按钮{ * 使用长耗时任务线程 * 监听鼠标按钮 * 1.判断输入内容是否合法 * 2.开始搜索 * } * 3.对话框{ * 提示找到了多少个满足条件的文件 * } */ static class MyFrame extends JFrame { MyFrame() { setSize(1000, 800); setLocation(100, 100); setTitle("查找文件"); setLayout(null);//如果没有这个,设置面板大小失败 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //输入框面板 JPanel io_Panel = new JPanel(); io_Panel.setBounds(10, 10, 200, 100); JLabel l1 = new JLabel("项目目录:"); JTextField t1 = new JTextField(); t1.setPreferredSize(new Dimension(100, 20)); JLabel l2 = new JLabel("查找内容:"); JTextField t2 = new JTextField(); t2.setPreferredSize(new Dimension(100, 20)); io_Panel.add(l1); io_Panel.add(t1); io_Panel.add(l2); io_Panel.add(t2); //查找按钮 JPanel button_panel = new JPanel(); JButton b = new JButton("点击查找"); JLabel l = new JLabel(); b.addActionListener(e -> { SwingWorker worker = new SwingWorker() { @Override protected Void doInBackground() { String folder = t1.getText(); String content = t2.getText(); if (folder.length() == 0 && content.length() == 0) { JOptionPane.showMessageDialog(null, "输入不能为空!"); return null; } else { if (!file_D(folder)) { JOptionPane.showMessageDialog(null, "文件夹不存在!"); return null; } l.setText("正在加载..."); //查找文件 search(folder, content); JOptionPane.showMessageDialog(null, "有"+count+"个文件"); l.setText("加载完毕"); } return null; } }; worker.execute(); }); button_panel.add(b); button_panel.add(l); button_panel.setBounds(300, 30, 80, 80); add(io_Panel); add(button_panel); } //判断文件是不是文件夹 public static boolean file_D(String s) { File f = new File(s); return f.isDirectory(); } /**查找文件的方法 * 1.项目目录 * 3.内容关键字 */ static int count = 0;//记录符合要求的文件的个数 public static void search(String folder, String content) { File file = new File(folder); File[] files = file.listFiles();//文件夹下的子文件 assert files != null; for (File f1 : files) { if (f1.isDirectory()) { search(f1.getAbsolutePath(), content); } else { select(f1, content); } } } //查找 public static void select(File f, String str) { try (FileReader fr = new FileReader(f)) { char[] charArr = new char[(int) f.length()]; fr.read(charArr); String s = String.copyValueOf(charArr); if(s.contains(str)) count++; } catch (IOException e) { e.printStackTrace(); } } }}
转载地址:http://hdozi.baihongyu.com/