java文件查找
java文件查找的实现,简单易学,这是查找界面以及主函数代码:
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);
}
}
这是查找的线程代码,实现边查找边显示:
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());
}
}
}
}
之前匆匆实现,没有加上线程,使得查找的过程无法看,真是不好意思,现在加上了线程实现了边查边显示,并且加上了键盘监听器,在激活窗体的前提下,可以通过指定按钮操作。欢迎之前看过的游客再次光临!大家还有什么想法都可以留言,我会吸收广大同志的意见,做出更好的东西来!