博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图形界面综合练习——查找文件内容
阅读量:3959 次
发布时间:2019-05-24

本文共 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/

你可能感兴趣的文章