【问题标题】:Fetch the list of all txt files in directory and sub directory and add it to a List获取目录和子目录中所有txt文件的列表并将其添加到列表中
【发布时间】:2020-03-12 09:15:11
【问题描述】:

尝试获取目录/子目录中所有文本文件的列表并将其添加到列表中

结构:

sampleDirFolder->testDirFolder->test.txt,test1.txt

代码:

import java.io.File;
import java.io.IOException;
import java.util.*;

public class testClass {

//Method to read dir/sub-dir and get list of .java files
public static List<String> listFiles(String path)

{
    File folder = new File(path);
    File[] files = folder.listFiles();
    for (File file : files)
    { if (file.isFile() && file.getName().endsWith(".txt"))
    {
        System.out.println(file.getName());
    }
    else if (file.isDirectory())
    {
        listFiles(file.getAbsolutePath());
    }
    }
    return listOfFiles;
}

public static void main(String [] args) throws IOException {
    listFiles("path/Desktop/sampledir");
}
}

操作:

test.txt
test1.txt

此代码适用于打印文件列表,有关如何将其添加到 List&lt;String&gt; 的任何建议

【问题讨论】:

  • 1.创建一个列表。 2. 每次找到文件时,将其添加到列表中。 3. 返回列表。 4.将返回的List中的所有元素添加到List中。
  • @Amongalen 当我尝试将文件名添加到函数中的列表时,它只返回一个空列表。
  • 您应该向我们展示您的尝试。当前代码甚至无法编译,因为没有 listOfFiles 变量。
  • 您可以使用 java 7 Files#walkFileTree 功能。如果您是 Java 新手,理解起来可能有些复杂,但这是一个非常紧凑的解决方案:docs.oracle.com/javase/7/docs/api/java/nio/file/…

标签: java recursion arraylist


【解决方案1】:

试试这个:

import java.io.File;
import java.io.IOException;
import java.util.*;

public class testClass {

//Method to read dir/sub-dir and get list of .java files
public static void listFiles(String path, List<String> filesList)

{
    File folder = new File(path);
    File[] files = folder.listFiles();
    for (File file : files)
    { if (file.isFile() && file.getName().endsWith(".txt"))
    {
        //System.out.println(file.getName());
        filesList.add(file.getName());
    }
    else if (file.isDirectory())
    {
        listFiles(file.getAbsolutePath(), filesList);
    }
    }
    //return listOfFiles;
}

public static void main(String [] args) throws IOException {
    List<String> filesList = new ArrayList<>();
    listFiles("path/Desktop/sampledir", filesList);
    System.out.println(filesList);
}
}

【讨论】:

  • else部分错误,代码无法编译。您正在调用listFiles(file.getAbsolutePath());,而没有带有单个参数的方法。您还需要在其中传递列表。
  • 是的,我收到了评论中描述的这个确切错误
猜你喜欢
  • 2017-01-21
  • 2010-11-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 1970-01-01
相关资源
最近更新 更多