
这个任务怎么实现,希望得到一份代码参考,重点不会的是 根据路径搜索包含关键词的文件
关注引自强大而免费的微信小程序:皆我百晓生。
以下是一个实现该功能的Java代码示例:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFileChooser;
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 FileSearcher extends JFrame implements ActionListener {
private JTextField pathTextField;
private JTextField keywordTextField;
private JTextArea searchResultTextArea;
public FileSearcher() {
super("文件搜索工具");
JPanel toolbarPanel = new JPanel();
JLabel pathLabel = new JLabel("搜索路径:");
pathTextField = new JTextField(30);
JButton browseButton = new JButton("浏览");
JLabel keywordLabel = new JLabel("关键字:");
keywordTextField = new JTextField(30);
JButton searchButton = new JButton("搜索");
browseButton.addActionListener(this);
searchButton.addActionListener(this);
toolbarPanel.add(pathLabel);
toolbarPanel.add(pathTextField);
toolbarPanel.add(browseButton);
toolbarPanel.add(keywordLabel);
toolbarPanel.add(keywordTextField);
toolbarPanel.add(searchButton);
searchResultTextArea = new JTextArea(20, 50);
searchResultTextArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(searchResultTextArea);
add(toolbarPanel, BorderLayout.NORTH);
add(scrollPane, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("浏览")) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int result = fileChooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
pathTextField.setText(selectedFile.getAbsolutePath());
}
} else if (e.getActionCommand().equals("搜索")) {
String searchPath = pathTextField.getText();
String keyword = keywordTextField.getText();
List<String> searchResults = searchFiles(searchPath, keyword);
displaySearchResults(searchResults);
}
}
private List<String> searchFiles(String searchPath, String keyword) {
List<String> searchResults = new ArrayList<>();
File directory = new File(searchPath);
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file.getName().contains(keyword)) {
searchResults.add(file.getAbsolutePath());
}
if (file.isDirectory()) {
searchResults.addAll(searchFiles(file.getAbsolutePath(), keyword));
}
}
}
return searchResults;
}
private void displaySearchResults(List<String> searchResults) {
StringBuilder sb = new StringBuilder();
for (String result : searchResults) {
sb.append(result).append("\n");
}
searchResultTextArea.setText(sb.toString());
}
public static void main(String[] args) {
new FileSearcher();
}
}
这段代码实现了一个简单的文件搜索工具界面,并提供了浏览和搜索功能。当用户点击"浏览"按钮时,会弹出一个文件选择对话框,选择完成后在搜索路径输入框中显示所选目录的完整路径。当用户点击"搜索"按钮时,会获取关键字输入框中的内容,然后在选择的搜索路径中搜索包含关键字的文件或文件夹,并将搜索结果显示在文本域中。搜索递归地遍历目录及其子目录,并通过File类的方法来判断文件名是否包含关键字。结果以文件的绝对路径的形式显示在文本域中。