个人学习总结二多线程文件搜索(界面版)
2014-10-21 13:04
411 查看
文件搜索程序源码
项目描述:
选择文件夹,找到包含对应关键字的文件
在Eclipse中建立so_file的工程
建立SOFile.java文件
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
public class SOFile extends JFrame {
private JTextField textField_1;
private JList list;
private JTextField ext;
private JTextField textField;
/**
* Launch the application
*
* @param args
*/
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
SOFile frame = new SOFile();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame
*/
public SOFile() {
super();
setResizable(false);
getContentPane().setLayout(null);
setBounds(100, 100, 356, 426);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
textField = new JTextField();
textField.setBounds(10, 27, 275, 28);
getContentPane().add(textField);
final JButton button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
JFileChooser f = new JFileChooser();
f.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
f.showOpenDialog(SOFile.this);
File selectFile = f.getSelectedFile();
if (selectFile != null) {
textField.setText(selectFile.getPath());
}
}
});
button.setText("...");
button.setBounds(286, 27, 53, 28);
getContentPane().add(button);
final JLabel label = new JLabel();
label.setText("搜索路径:");
label.setBounds(10, 3, 138, 18);
getContentPane().add(label);
final JLabel label_1 = new JLabel();
label_1.setText("后缀:");
label_1.setBounds(10, 61, 66, 18);
getContentPane().add(label_1);
ext = new JTextField();
ext.setText(".txt,.java,.jsp,.html,.htm,.xml,.ini,.log");
ext.setBounds(10, 85, 329, 28);
getContentPane().add(ext);
final JButton button_1 = new JButton();
button_1.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
list.setListData(new Vector());
new FileAction(ext.getText(), textField.getText(), textField_1
.getText(), list);
}
});
button_1.setText("开始搜索");
button_1.setBounds(233, 143, 106, 28);
getContentPane().add(button_1);
final JLabel label_2 = new JLabel();
label_2.setText("关键字");
label_2.setBounds(10, 119, 66, 18);
getContentPane().add(label_2);
final JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 178, 329, 213);
getContentPane().add(scrollPane);
list = new JList();
scrollPane.setViewportView(list);
textField_1 = new JTextField();
textField_1.setText("java学习");
textField_1.setBounds(10, 143, 217, 28);
getContentPane().add(textField_1);
//
}
}
建立
FileAction.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.LinkedList;
import java.util.Vector;
import javax.swing.JList;
public class FileAction extends Thread {
private String ext;
private String soPath;
private String key;
private JList list;
public FileAction(String ext, String soPath, String key, JList list) {
this.ext = ext;
this.soPath = soPath;
this.key = key;
this.list = list;
// list.setListData(arg0)
this.start();
}
public void run() {
// 开始搜索文件
getFile(new File(soPath));
new SoKey().start();
new SoKey().start();
new SoKey().start();
new SoKey().start();
new SoKey().start();
}
Vector f1 = new Vector();
public class SoKey extends Thread {
public void run() {
try {
while (true) {
File f = null;
synchronized (files) {
f = files.removeLast();
}
BufferedReader rio = new BufferedReader(new FileReader(f));
String line = null;
while ((line = rio.readLine()) != null) {
if (line.indexOf(key) >= 0) {
f1.add(f.getPath());
list.setListData(f1);
break;
}
}
rio.close();
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
LinkedList<File> files = new LinkedList();
public void getFile(File f) {
if (f.isFile()) {
for (String e : ext.split(",")) {
if (f.getName().toLowerCase().endsWith(e.toLowerCase())) {
files.add(f);
break;
}
}
} else {
File fs[] = f.listFiles();
if (fs != null) {
for (File file : fs) {
getFile(file);
}
}
}
}
}
运行界面
项目描述:
选择文件夹,找到包含对应关键字的文件
在Eclipse中建立so_file的工程
建立SOFile.java文件
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
public class SOFile extends JFrame {
private JTextField textField_1;
private JList list;
private JTextField ext;
private JTextField textField;
/**
* Launch the application
*
* @param args
*/
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
SOFile frame = new SOFile();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame
*/
public SOFile() {
super();
setResizable(false);
getContentPane().setLayout(null);
setBounds(100, 100, 356, 426);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
textField = new JTextField();
textField.setBounds(10, 27, 275, 28);
getContentPane().add(textField);
final JButton button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
JFileChooser f = new JFileChooser();
f.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
f.showOpenDialog(SOFile.this);
File selectFile = f.getSelectedFile();
if (selectFile != null) {
textField.setText(selectFile.getPath());
}
}
});
button.setText("...");
button.setBounds(286, 27, 53, 28);
getContentPane().add(button);
final JLabel label = new JLabel();
label.setText("搜索路径:");
label.setBounds(10, 3, 138, 18);
getContentPane().add(label);
final JLabel label_1 = new JLabel();
label_1.setText("后缀:");
label_1.setBounds(10, 61, 66, 18);
getContentPane().add(label_1);
ext = new JTextField();
ext.setText(".txt,.java,.jsp,.html,.htm,.xml,.ini,.log");
ext.setBounds(10, 85, 329, 28);
getContentPane().add(ext);
final JButton button_1 = new JButton();
button_1.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
list.setListData(new Vector());
new FileAction(ext.getText(), textField.getText(), textField_1
.getText(), list);
}
});
button_1.setText("开始搜索");
button_1.setBounds(233, 143, 106, 28);
getContentPane().add(button_1);
final JLabel label_2 = new JLabel();
label_2.setText("关键字");
label_2.setBounds(10, 119, 66, 18);
getContentPane().add(label_2);
final JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 178, 329, 213);
getContentPane().add(scrollPane);
list = new JList();
scrollPane.setViewportView(list);
textField_1 = new JTextField();
textField_1.setText("java学习");
textField_1.setBounds(10, 143, 217, 28);
getContentPane().add(textField_1);
//
}
}
建立
FileAction.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.LinkedList;
import java.util.Vector;
import javax.swing.JList;
public class FileAction extends Thread {
private String ext;
private String soPath;
private String key;
private JList list;
public FileAction(String ext, String soPath, String key, JList list) {
this.ext = ext;
this.soPath = soPath;
this.key = key;
this.list = list;
// list.setListData(arg0)
this.start();
}
public void run() {
// 开始搜索文件
getFile(new File(soPath));
new SoKey().start();
new SoKey().start();
new SoKey().start();
new SoKey().start();
new SoKey().start();
}
Vector f1 = new Vector();
public class SoKey extends Thread {
public void run() {
try {
while (true) {
File f = null;
synchronized (files) {
f = files.removeLast();
}
BufferedReader rio = new BufferedReader(new FileReader(f));
String line = null;
while ((line = rio.readLine()) != null) {
if (line.indexOf(key) >= 0) {
f1.add(f.getPath());
list.setListData(f1);
break;
}
}
rio.close();
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
LinkedList<File> files = new LinkedList();
public void getFile(File f) {
if (f.isFile()) {
for (String e : ext.split(",")) {
if (f.getName().toLowerCase().endsWith(e.toLowerCase())) {
files.add(f);
break;
}
}
} else {
File fs[] = f.listFiles();
if (fs != null) {
for (File file : fs) {
getFile(file);
}
}
}
}
}
运行界面
相关文章推荐
- django 学习个人总结 之admin后台上传文件
- Directshow学习笔记六-----重新压缩一个AVI文件(个人学习总结,仅供参考)
- Php常用文件操作函数,正则表达式,个人学习总结
- Cisco 3750文件系统学习总结
- 关于线程学习总结
- Windows 窗体编程 如何:使用后台线程搜索文件 (线程经典例子)
- Java线程学习和总结
- Java线程学习和总结
- 个人学习代码保存:例12.读取GridView文件中的数据到Excel文件
- [转贴]Symbian编程VC开发环境设置 (方便个人学习用,转载自 rocklys的专栏,转贴请搜索原作者)
- 个人学习Linux知识总结
- C语言总结-个人学习笔记
- 一些C++连接,以及个人的C++学习总结。
- 个人学习代码保存:例6.多文件上传
- 个人学习代码保存:例10.通过模板创建静态页面的操作文件的一个自定函数
- JIURL PE 格式学习总结(二)-- PE文件中的输出函数
- JIURL PE 格式学习总结(二)-- PE文件中的输出函数
- JIURL PE 格式学习总结(四)-- PE文件中的资源
- ACE个人学习总结文档
- Cisco 3750文件系统学习总结