【Java】gui版文件扫描器
import java.awt.EventQueue;import javax.swing.*;
import java.awt.Toolkit;
import java.awt.event.ActionListener;
import java.io.File;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class SeachFile extends JFrame {
/**
* 名称:文件扫描器
* 时间:2019年2月27
* 功能:扫描磁盘中的exe、txt、png文件
* 实现搜索输入的文件的位置,没有运用多线程,后续加上
*/
private static final long serialVersionUID = 1L;
static Toolkit kit = Toolkit.getDefaultToolkit();
private int x = kit.getScreenSize().width / 4 ;
private int y = kit.getScreenSize().height / 4;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
SeachFile frame = new SeachFile();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
private JTextArea textArea;
private JTextField textField;
public SeachFile() {
setTitle("文件搜索");
setIconImage(Toolkit.getDefaultToolkit().getImage("src\\swing\\12.jpg"));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setBounds(x, y, 943, 573);
getContentPane().setLayout(null);
JLabel lblNewLabel = new JLabel("文件名:");
lblNewLabel.setBounds(10, 20, 60, 30);
getContentPane().add(lblNewLabel);
textField = new JTextField();
textField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
sw();
}
}
});
textField.setBounds(68, 21, 761, 30);
getContentPane().add(textField);
textField.setColumns(10);
JButton btnNewButton = new JButton("搜索");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sw();
}
});
btnNewButton.setBounds(836, 20, 93, 30);
getContentPane().add(btnNewButton);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);//设置垂直滚动条一直在
scrollPane.setBounds(10, 60, 919, 465);
getContentPane().add(scrollPane);
textArea = new JTextArea();
textArea.setEditable(false);
scrollPane.setViewportView(textArea);
}
@SuppressWarnings("unused")
public void sw() {
if (textField.getText().equals("")) {
JOptionPane.showMessageDialog(null, "搜索不能为空");
}else {
//的到所有盘符
File[] root = File.listRoots();
//遍历盘符
for (File path : root) {
//判断盘符是不是无效磁盘或者是不可读的
if (path != null) {
//System.out.println(path.getPath());
//得到磁盘下的文件夹
File[] sonroot = path.listFiles();
JOptionPane.showMessageDialog(null, "磁盘扫描中请稍等");
for (File file : sonroot) {
if (file.isHidden()) { //检测是否是隐藏的
if (file == null) {
break;
}
}
if (file.isDirectory()) {
System.out.println(file.getPath());
Seach(file);
}
}
}else {
break;
}
}
}
}
/*
* 此段为搜索引擎
* 每扫描一个文件或者文件夹判断是否为null或者是否有权限
* 有权限的将遍历,看是否为文件是的话在文本域中追加信息
*/
public void Seach(File path) {
//将得到的路径下的文件转化成为一个数组
File[] files = path.listFiles();
//判断文件是否为空或者有无访问权限,有访问权限进行下一步,反之则结束这个递归
if (files == null) {
return;
}
//循环遍历文件
for (File file : files) {
//判断是否为文件夹,是文件夹进行递归,不是就可以进行下一步
if (file.isDirectory()) {
//System.out.println(file.getPath());
Seach(file);
}else {
//判断文件是否可写和可读
if (file.canRead() && file.canWrite()) {
//判断文件的名字结尾是否以txt、exe、png结尾,以它们结尾追加到文本域中
if (file.getName().endsWith(".txt") || file.getName().endsWith(".exe") || file.getName().endsWith(".png")) {
//判断文本框中的输入的是否是找到的文件,如果是就追加到对话框中
if (textField.getText().equals(file.getName())) {
JOptionPane.showMessageDialog(null, file.getAbsolutePath(), "找到了", 3);
return;
}
textArea.append(file.getPath() + "\n");
}
}
}
}
}
}
页:
[1]