如何迭代文本文件中的路径列表?

问题描述 投票:0回答:3

我有一个文本文件,其中包含文件夹路径列表。

我想找到每个文件夹中有多少个带有特殊字符串的文件,即任何字符串。

对于一个路径,我可以列出文件夹中存在的所有文件,但我的问题是如何为所有路径找到它?

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);
}
java file recursion path directory
3个回答
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());
        }
    }
}

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());        
    }        
}

0
投票

我有一个

folderPath.txt
,其中有这样的目录列表。

D:�172

D:\部署

D:\堆转储

D:\程序文件

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}

© www.soinside.com 2019 - 2024. All rights reserved.