java - 如何在整个硬盘驱动器中搜索特定文件(Java Eclipse)?
问题描述
public static void fileSearcher() throws IOException {
File dire = new File ("C:/");
String[] allFile = dire.list();
for (int i = 0;i<10;i++) {
String FilIn = allFile[i]; // here is where I need to scan entire pc for file
if(FilIn.equals("eclipse.exe")){
System.out.println("Found Eclipse!");
break;
}
else {
System.out.println("Eclipse not found on local drive.");
}
是否有一种简单的方法可以扫描整个 HHD/SSD 以查找特定文件?
解决方案
这将为您完成这项工作,并且在有多个驱动器或分区时也可以使用。它还将搜索具有相同名称的其他文件。
import java.io.File;
import javax.swing.filechooser.FileSystemView;
public class HardDiskSearcher {
private static boolean fileFound = false;
private static String searchTerm = "eclipse.exe";
public static void main(String[] args) {
fileFound = false;
File[] systemRoots = File.listRoots();
FileSystemView fsv = FileSystemView.getFileSystemView();
for (File root: systemRoots) {
if (fsv.getSystemTypeDescription(root).equals("Local Disk")) {
File[] filesFromRoot = root.listFiles();
recursiveSearch(searchTerm, filesFromRoot);
}
}
System.out.println("File you searched for was found? : " + fileFound);
}
private static void recursiveSearch(String searchTerm, File... files) {
for (File file: files) {
if (file.isDirectory()) {
File[] filesInFolder = file.listFiles();
if (filesInFolder != null) {
for (File f : filesInFolder) {
if (f.isFile()) {
if (isTheSearchedFile(f, searchTerm)) {
fileFound = true;
}
}
}
for (File f : filesInFolder) {
if (f.isDirectory()) {
recursiveSearch(searchTerm, f);
}
}
}
}
else if (isTheSearchedFile(file, searchTerm)) {
fileFound = true;
}
}
}
private static boolean isTheSearchedFile(File file, String searchTerm) {
if (file.isFile() && (searchTerm.equals(file.getName())) ) {
System.out.println("The file you searched for has been found! " +
"It was found at: " + file.getAbsolutePath());
return true;
}
return false;
}
}
我不是 100% 确定为什么这里需要 if 语句 (filesInFolder != null),但我怀疑 Windows 在尝试从特定系统文件夹或其他内容中列出文件时返回 null。
推荐阅读
- python - 将字符串转换为切片索引并为其赋值
- bluetooth - Apple Magic Keyboard/Trackpad 2 将与 linux 设备配对但不会连接
- angular - 添加脉冲动画效果以映射标记角度 agm
- javascript - 如何在多个设备上并行运行测试?
- powerbi - 使用一些空白值和使用切片器的 Power BI 动态排名
- python - 如何计算 Python 列表中项目的出现次数?
- html - onclick 后表格单元格移动
- c - C中最小光线追踪器的神秘问题
- xml - 如何确认一个字符串序列是另一个字符串序列的子集?
- android - 图像没有从列表视图从一个活动加载到另一个活动