我有一个文本文件,其中包含文件夹路径列表。
我想找到每个文件夹中有多少个文件,其中包含一个特殊字符串,即任何字符串。
对于一个路径,我能够列出文件夹中的所有文件,但我的问题是如何为所有路径找到它?
public static void main(String[] args) {
List<String> result = new ArrayList<String>();
File[] fiels = new File("D:\\html").listFiles();
for (File file : fiels) {
if (file.isFile()) {
result.add(file.getName());
}
}
System.out.println(result);
}
答案 0 :(得分:2)
提取当前代码,如果File
是目录,则调用它。
public static void main(String[] args) {
List<String> result = new ArrayList<String>();
File[] files = new File("D:\\html").listFiles();
locateFiles(result, files);
System.out.println(result);
}
private static void locateFiles(List<String> result, File[] files) {
for (File file : files) {
if (file.isFile()) {
result.add(file.getName());
} else if (file.isDirectory()) {
locateFiles(result, file.listFiles());
}
}
}
答案 1 :(得分:0)
由于程序在目录及其子目录上执行相同的功能集。使用递归解决问题是有意义的。在递归中,函数一次又一次地调用自身,直到它在给定的基本路径下占用所有目录和文件。
static List<String> results = new ArrayList<String>();
public static void main(String[] args) {
listFiles(new File("D:\\html"));
for (String result: results)
System.out.println(result);
}
private static void listFiles(File dir) {
//Get list of all files and folders in directory
File[] files = dir.listFiles();
//For all files and folders in directory
for(File file: files){
//Check if directory
if(file.isDirectory())
//Recursively call file list function on the new directory
listFiles(file);
else
results.add(file.getAbsolutePath());
}
}
答案 2 :(得分:0)
我有一个folderPath.txt
,其中包含一个像这样的目录列表。
D:\ 305172
D:\ Deployment
D:\ HeapDumps
D:\ Program Files
d:\编程
此代码为您提供所需内容+您可以根据需要进行修改
public class Main {
public static void main(String args[]) throws IOException {
List<String> foldersPath = new ArrayList<String>();
File folderPathFile = new File("C:\\Users\\ankur\\Desktop\\folderPath.txt");
/**
* Read the folderPath.txt and get all the path and store it into
* foldersPath List
*/
BufferedReader reader = new BufferedReader(new FileReader(folderPathFile));
String line = reader.readLine();
while(line != null){
foldersPath.add(line);
line = reader.readLine();
}
reader.close();
/**
* Map the path(i.e Folder) to the total no of
* files present in that path (i.e Folder)
*/
Map<String, Integer> noOfFilesInFolder = new HashMap<String, Integer>();
for (String pathOfFolder:foldersPath){
File[] files2 = new File(pathOfFolder).listFiles();//get the arrays of files
int totalfilesCount = files2.length;//get total no of files present
noOfFilesInFolder.put(pathOfFolder,totalfilesCount);
}
System.out.println(noOfFilesInFolder);
}
}
输出:
{D:\Program Files=1, D:\HeapDumps=16, D:\Deployment=48, D:\305172=4, D:\Programming=13}