java - 为什么我调用返回列表的方法时会打印一个空列表?

标签 java

当我从中调用 System.out.Println() 时,返回列表的方法 displayFilesInDirectory() 会打印整个列表。但是,调用 displayFilesInDirectory 的方法会打印“[]”作为列表内容。

public  void dropCompleted(DragEvent event) {
    Dragboard db = event.getDragboard();
    boolean success = false;

    List list = new ArrayList();
    String tableName;
    List listOfDirectories;
    tableName = (String) playList.getSelectionModel().selectedItemProperty().getValue();

    if (db.hasFiles()) {
        event.acceptTransferModes(TransferMode.COPY);

        for (Object file : db.getFiles()) {
            File directories = (File) file;
            listOfDirectories = (displayFilesInDirectory(directories));

            System.out.println("Calling displayFilesInDirectory: " + listOfDirectories);
        }
        success = true;
    }

public static List displayFilesInDirectory(File dir) {
    List newList = new ArrayList();

    File[] files = dir.listFiles();
    for (File file : files) {
        if (file.isDirectory()) {
            displayFilesInDirectory(file);
        } else if (file.isFile()) {
            newList.add(file);
        }
    }
    System.out.println("From displayFileInDirectory()"+newList);
    return newList;
}

最佳答案

如果您在一个目录上调用它,该目录中直接没有文件,而仅在其子目录中,则 displayFilesInDirectory 将返回一个空列表,因为对该目录中的目录进行递归调用目录不会将结果列表添加到 newList 中。将该行替换为

newList.addAll(displayFilesInDirectory(file));

关于java - 为什么我调用返回列表的方法时会打印一个空列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27882409/

相关文章:

java - 如果所有RadioGroup都被选中怎么处理?

java - 为什么我们需要在接口(interface)中指定参数名称?

java - 将字符串数组转换为 int

java - App Engine 上的 JSF 2 错误 "Unable to instantiate ExpressionFactory"

overriding - OpenJDK @Override 缺失问题

java - 使用结构/类来增加缓存空间局部性?

c# - 炼金术 WebSocketClient

java - JBoss Gradle

java - Java 中线程的不同操作需要多长时间?

java - 如何用 Java 解析 .eml 文件