[color=blue][b][size=xx-large]java文件查找[/size][/b][/color]
[b]java文件查找的实现,简单易学,这是查找界面以及主函数代码:[/b]

package 大二lesson04;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class FileIO {
	public static JTextField jt1,jt2;
	public static JTextArea jt3; 
	public void Find(String filename){
			FileThread ft = new FileThread(filename, jt1, jt2, jt3);
			ft.start();
	}	
	public static void main(String[] args) {
		//调用方法
		new FileIO().intUI();
	}
	//界面方法
	public void intUI(){
		//创建一个JFrame对象
		JFrame jf =new JFrame("文件查找系统");
		//设置大小
		jf.setSize(1000,600);
		//设置界面大小不可改
		jf.setResizable(false);
		//将窗体设置在界面的中间出现
		jf.setLocationRelativeTo(null);
		//点击关闭按钮时,程序完全关闭,不在后台执行
		jf.setDefaultCloseOperation(3);
		//设置jf的布局,其默认是边框布局,即下面的语句可以省略
		jf.setLayout(new BorderLayout());
		//创建一个JPanel对象
		JPanel jp1 = new JPanel();
		//设置面板大小
		jp1.setPreferredSize(new Dimension(0,60));
		JPanel jp2 = new JPanel();
		//设置面板的布局为边框布局,面板的默认布局是流式布局
		jp2.setLayout(new BorderLayout());
		JButton start =new JButton("开始查找(Enter)");//开始按钮
		JButton delete =new JButton("清空(Delete)");//开始按钮
		start.setPreferredSize(new Dimension(300,30));
		delete.setPreferredSize(new Dimension(300,30));

		JLabel jl2 = new JLabel("输入查找的后缀名eg:.txt(不输入则表示查找整个路径的内容):");//标签
		JLabel jl1 = new JLabel("输入你要查找的路径(eg:"+"F:\\"+"):");
		JLabel jl3 = new JLabel("CT出品必属精品");
		//创建一个JTextField并设置了长度
		jt1=new JTextField(20);
		jt2=new JTextField(3);
		//设置下面的显示文本框的大小
		jt3 =new JTextArea(24,82);
		jt3.addKeyListener(new KeyListener() {

			public void keyReleased(KeyEvent e) {
				if(e.getKeyChar()==KeyEvent.VK_ENTER){
					jt3.setText(null);
					//调用查找方法
					Find(jt1.getText());
				}
				if(e.getKeyChar()==KeyEvent.VK_DELETE){
					jt3.setText(null);
				}
			}
			public void keyPressed(KeyEvent e) {
			}
			public void keyTyped(KeyEvent e) {

			}
		});//实现键盘监听器
		//设置文本框中的字体
		jt3.setFont(new Font(null, Font.BOLD,15));
		//改变光标
//		jt3.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
//		jt3.setFont(new Font("宋体",Font.PLAIN,16));
		//设置文本框中的颜色
		jt3.setBackground(Color.PINK);
		//给文本框添加滚动条
		JScrollPane jsp=new JScrollPane(jt3);
		//设置文本框为只读
		jt3.setEditable(false);
		jp1.add(jl1);//把组件添加入面板
		jp1.add(jt1);
		jp1.add(jl2);
		jp1.add(jt2);
		jp1.add(jl3);
		jp1.add(start);
		jp1.add(delete);
		jp2.add(jsp,BorderLayout.CENTER);
		//把面板添加入窗体
		jf.add(jp1,BorderLayout.NORTH);
		jf.add(jp2,BorderLayout.CENTER);
		//给按钮添加监听器
		start.addActionListener(new ActionListener(){

			public void actionPerformed(ActionEvent e) {
				jt3.setText(null);
				//调用查找方法
				Find(jt1.getText());
			}
		});
		delete.addActionListener(new ActionListener(){

			public void actionPerformed(ActionEvent e) {
				jt3.setText(null);
			}
		});

		//使窗体可见
		jf.setVisible(true);
	}


}



[b]这是查找的线程代码,实现边查找边显示:[/b]

package 大二lesson04;

import java.io.File;

import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class FileThread extends Thread{
	public JTextField jt1,jt2;
	public JTextArea jt3; 
	public String filename;
	public FileThread(String filename,JTextField jt1,JTextField jt2,JTextArea jt3){
		this.filename=filename;
		this.jt1 = jt1; 
		this.jt2 = jt2; 
		this.jt3 = jt3; 

	}
	public void run(){
		this.find(filename);
		JOptionPane.showMessageDialog(null, "         查找结束!!", "警告", 1);
	}
	public void find(String filename){
		File f=new File(filename);
		//将f的子目录中的文件存入File[]中
		File[] files=f.listFiles();
		if(filename.isEmpty()) JOptionPane.showMessageDialog(null, "      您输入的路径不合法!!", "警告", 2);
		if(files!=null){
			for(int i =0;i<files.length;i++){
				//获取路径名,并存储起来
				String name = files[i].getAbsolutePath();
				//判断文件是否以jt2.getText()结尾
				if(name.endsWith(jt2.getText()))
					jt3.append(files[i].getAbsolutePath()+"\n");
				else if(jt2.getText().isEmpty())
					jt3.append(files[i].getAbsolutePath()+"\n");
//					jt3.paintImmediately(jt3.getBounds());
//				 	jt3.paintImmediately(jt3.getX(), jt3.getY(), jt3.getWidth(), jt3.getHeight()); 
				if(files[i].isDirectory())
					find(files[i].getAbsolutePath());
			}

		}

	}
}



[img]http://dl2.iteye.com/upload/attachment/0102/9864/cfca7689-d0b9-3205-883d-10207fa4a626.png[/img]


[size=x-large][color=red][b]之前匆匆实现,没有加上线程,使得查找的过程无法看,真是不好意思,现在加上了线程实现了边查边显示,并且加上了键盘监听器,在激活窗体的前提下,可以通过指定按钮操作。欢迎之前看过的游客再次光临!大家还有什么想法都可以留言,我会吸收广大同志的意见,做出更好的东西来![/b][/color][/size]