基于文件的基本操作,编写了一个简单的文件搜索程序
1.界面
package fileFound;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/**
* 文件的查找登陆界面
*
* @author lenovo
*
*/
public class FileFoundUI extends JFrame{
public static void main(String args[]) {
// 创建FileCopy对象
FileFoundUI fc = new FileFoundUI();
fc.showUI();
}
/**
* 初始化窗口
*/
public void showUI(){
//设置标题
this.setTitle("文件统计器 v1.0");
//设置窗体大小
this.setSize(600,350);
//创建流式布局器
java.awt.FlowLayout fl=new java.awt.FlowLayout();
this.setLayout(fl);
//创建一个面板对象
JPanel jp=new JPanel();
//创建一个尺寸对象
java.awt.Dimension di=new java.awt.Dimension(392,96);
//设置面板的大小
jp.setPreferredSize(di);
//创建并给面板加上流式布局器
java.awt.FlowLayout fl1=new java.awt.FlowLayout();
jp.setLayout(fl1);
//创建两个标签,创建两个文本框,一个按钮
JLabel jl1=new JLabel("源文件路径:");
final JTextField jt1=new JTextField(20);
JLabel jl2=new JLabel("查找的内容:");
final JTextField jt2=new JTextField(20);
JButton jb=new JButton("开始查找");
//将标签,文本行,按钮加到面板上去
jp.add(jl1);
jp.add(jt1);
jp.add(jl2);
jp.add(jt2);
jp.add(jb);
//把面板加到窗体
this.add(jp);
//创建一个多行文本框
final JTextArea jta=new JTextArea(11,50);
this.add(jta);
// 创建一个滚动条
JScrollPane jsp = new JScrollPane(jta);
this.add(jsp);
//窗体大小不可改变
this.setResizable(false);
//关闭时退出
this.setDefaultCloseOperation(3);
//将窗体显示出来
this.setVisible(true);
//给开始复制按钮安装动作监听器
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String start="**********************************开始查找************************************\n";
//将start写入多行文本框中
jta.append(start);
//得到源文件路径
String str1=jt1.getText();
//得到查找的内容
String str2=jt2.getText();
//创建一个FileFound对象
FileFound ff=new FileFound();
int count=ff.foundfile(str1, str2);
//得到迭代器
java.util.Iterator<String> ite=ff.getlist().iterator();
while(ite.hasNext()){
jta.append(ite.next()+"\n");
}
jta.append(" 查找完毕!!! 总共查找到:"+count+"个文件");
}
});
}
}
2.查找的方法
package fileFound;
/**
* 文件查找
*
* @author lenovo
*
*/
public class FileFound {
// 定义一个队列,用来装入查找到得路径
java.util.ArrayList<String> sal = new java.util.ArrayList<String>();
/**
* 查找文件
*
* @param path
* :查找文件范围的路径
* @param name
* :查找的内容
* @return:找到的个数
*/
public int foundfile(String path, String name) {
// 计数器
int count = 0;
// 根据给定路径创建文件
java.io.File file = new java.io.File(path);
// 判断文件是否存在
if (!file.exists()) {
return 0;
}
// 将文件夹下的装入文件数组
java.io.File[] fa = file.listFiles();
if (fa == null) {
System.out.println("文件夹不存在");
return 0;
}
for (int i = 0; i < fa.length; i++) {
// 得到文件的文件名
String s1 = fa[i].getName();
// 得到文件的绝对路径
String s2 = fa[i].getAbsolutePath();
// 如果给定的文件夹下有差查找内容
int num = s1.indexOf(name);
// 如果是真实文件
if (fa[i].isFile()) {
if (num >= 0) {
count++;
// 将路径装入队列
sal.add("查找到一个文件其路径为:" + s2);
}
} else if (fa[i].isDirectory()) {
count += foundfile(s2, name);
}
}
return count;
}
/**
* 得到装载文件路径的队列
*
* @return:装载文件路径的队列
*/
public java.util.ArrayList<String> getlist() {
return sal;
}
}
3.界面效果图: