繁体   English   中英

如何获取表java的文件路径

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM