当我从中调用 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/