[英]How to get files path to table java
我在获取表格中的文件列表时遇到了一些问题。 这是我的listFilesForFolder
方法:
class listFilesForFolder{
public void listFilesForFolder(final File folder) {
String[ ] table = new String[5] ;
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
listFilesForFolder(fileEntry);
table[0] = fileEntry.getPath();
} else {
System.out.println(fileEntry.getPath());
System.out.println(table[0]);
}
}
}
给我:
/home/piotr/Pobrane/162372-1.jpg
null
/home/piotr/Pobrane/skype-4.3.0.37-suse.i586.rpm
null
如何用文件路径填充我的表格?
简单的
fileEntry.isDirectory()
返回false
所以它永远不满足条件
if (fileEntry.isDirectory())
所以没有设置table[0]
值。
摆脱整个if-else
块并用 just 替换它
table[0] = fileEntry.getPath(); // or whatever method you want to use to increment i
int i = 0;
for (final File fileEntry : folder.listFiles()) {
table[i++] = fileEntry.getPath();
}
我认为你需要一个列表,而不是一个数组。 如果不递归调用该方法,则将丢失子文件夹的所有文件。 如果要获取子文件夹的文件,请使用以下内容:
public List<String> listFilesForFolder(final File folder) {
List<String> list = new ArrayList<>();
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
list.addAll(listFilesForFolder(fileEntry)); //recursively call the same method to get the files of the subfolder
} else {
list.add(fileEntry.getPath()); //add the files of this folder to the list
System.out.println(fileEntry.getPath()); //prints only the files of all subfolders
}
}
return list; //returns all the files of this folder and all the files of its subfolders
}
如果你需要你的最终输出是一个数组而不是一个列表,那么只需将此列表转换为一个数组,在你调用listFilesForFolder
的方法中,如下所示:
List<String> list = listFilesForFolder(intialFile);
String[] table = new String[list.size()];
table = list.toArray(table); //the result as an array
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.