文件搜索器

 文件搜索器


  package cn315_1;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

public class FileDisplay extends JFrame {

	/**
	 * 文件搜索器
	 * 
	 * @param args
	 */

	// 定义一些属性
	private JPanel panel;// 面板
	private JComboBox jcb;// 下拉菜单
	private JTextField jtf;// 文本框
	private JButton buStart;// 开始按钮
	private JButton buStop;// 停止按钮
	private JTextArea jta; // 多行文本框

	private Object Root = "D:\\";
	private String content;
	private String path;
	private int count;

	public static void main(String[] args) {
		// 创建对象
		FileDisplay fd = new FileDisplay();
		// 调用显示窗体的方法
		fd.showFrame();
	}

	// 构造函数 初始化各组件
	public FileDisplay() {
		// 初始化 各组件
		String[] menu = { "C:\\", "D:\\", "E:\\", "F:\\" };
		jcb = new JComboBox(menu);// 下拉菜单

		jtf = new JTextField(10);// 文本框
		buStart = new JButton("开始搜索");// 搜索按钮
		buStop = new JButton("停止搜索");
		jta = new JTextArea();// 多行文本框
		panel = new JPanel();
		// 添加组件到panel
		panel.add(jcb);
		panel.add(jtf);
		panel.add(buStart);
		panel.add(buStop);
		// 添加组件到JFrame
		this.add(panel, BorderLayout.NORTH);
		this.add(jta, BorderLayout.CENTER);
		// 题目前边添加图像
		this.setIconImage(new ImageIcon("image\\sousou.jpg").getImage());
		// 创建一个滚动条
		JScrollPane jsp = new JScrollPane(jta);
		this.add(jsp);

	}

	public void showFrame() {
		this.setTitle("我的文件搜索器1.0");
		this.setSize(400, 500);
		this.setLocationRelativeTo(null);
		this.setResizable(false);
		this.setDefaultCloseOperation(3);

		// 下拉菜单中添加监听器
		jcb.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Root = jcb.getSelectedItem();
				System.out.println("得到的盘是:" + Root);
			}
		});

		// 开始按钮上添加监听器
		buStart.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// 得到文本框中输入的内容
				content = jtf.getText();
				System.out.println("您输入的文件名字是" + content);
				// 创建FileFind监听器对象
				FileFind filefind = new FileFind();

				// 调用搜索文件的方法
				count = filefind.getFilePath((String) Root, content);
				System.out.println("找到的文件个数是" + count);
				ArrayList<String> arrlist = filefind.getArrayList();
				if (count > 0) {
					for (int i = 0; i < arrlist.size(); i++) {
						jta.append("你所查找的内容的路径是:" + arrlist.get(i) + "\n");
					}
				} else {
					jta.append("没有找到你要查找的内容" + "\n");
				}
			}
		});

		this.setVisible(true);
	}
}

 

 

//定义一个类  主要返回要搜索的文件的路径

 

package cn315_1;

import java.io.*;
import java.util.ArrayList;

public class FileFind {

	private String path;
	private ArrayList<String> arrlist = new ArrayList<String>();;

	// 定义一个搜索文件的方法
	public int getFilePath(String fileName, String content) {
		// 定义一个计数器
		int count = 0;
		if (content.equals("")) {
			return 0;
		}
		// 用传入的参数创建一个文件
		File fileRoot = new File(fileName);
		// 得到该文件下所有的文件 返回数组
		File[] fileList = fileRoot.listFiles();

		if (null != fileList && fileList.length != 0) {
			// 遍历数组
			for (int i = 0; i < fileList.length; i++) {
				// 如果是真实的文件
				if (fileList[i].isFile()) {
					String dir = fileList[i].getAbsolutePath();
					if (dir.indexOf(content) >= 0) {
						count++;
						arrlist.add(dir);
					}
				}
				if (fileList[i].isDirectory()) {
					// 得到该文件夹的路径
					path = fileList[i].getAbsolutePath();
					count += getFilePath(path, content);
				}

			}
		}
		return count;
	}

	public ArrayList<String> getArrayList() {
		return arrlist;
	}
}

 

 

//还有一些知识如线程没用到,所以停止按钮上没有添加监听 无法实现停止的功能 

你可能感兴趣的:(jsp,swing,F#)