0

我试图列出我的 android 模拟器的特定文件夹中的所有文件,但我一直得到空答案。

这是我的代码:

File sdCardRoot = Environment.getExternalStorageDirectory();
File[] file= new File(sdCardRoot+"path");
for (File f : file.listFiles()) {
    if (f.isFile())
        String name = f.getName();

}

这似乎不起作用不知道为什么。

4

4 回答 4

9

我将函数分成两部分,第一个函数获取给定路径中的所有文件,第二个函数从文件数组中获取文件名。

public File[] GetFiles(String DirectoryPath) {
    File f = new File(DirectoryPath);
    f.mkdirs();
    File[] file = f.listFiles();
    return file;
}

public ArrayList<String> getFileNames(File[] file){
    ArrayList<String> arrayFiles = new ArrayList<String>();
     if (file.length == 0)
            return null;
        else {
            for (int i=0; i<file.length; i++) 
                arrayFiles.add(file[i].getName());
        }

    return arrayFiles;
}
于 2013-07-03T14:24:15.670 回答
2

改变

File[] file= new File(sdCardRoot+"path");

File[] file= new File(sdCardRoot, "path");

并确保目录path退出

于 2013-07-03T14:23:06.883 回答
0

只需检查一下:

  List<File> files = getListFiles(new File("YOUR ROOT")); 
  private List<File> getListFiles(File parentDir) {
      ArrayList<File> inFiles = new ArrayList<File>();
      File[] files = parentDir.listFiles();
      for (File file : files) {
          if (file.isDirectory()) {
          inFiles.addAll(getListFiles(file));
      } else {
          if(file.getName().endsWith(".csv")) {
              inFiles.add(file);
          }
      }
}

return inFiles;
于 2013-07-03T14:24:55.857 回答
0

由于sdCardRoot是 的实例FilesdCardRoot+"path"将返回与 相同的内容sdCardRoot.toString() + "path"

但是,调用file.toString()返回文件名,而不是绝对路径。你需要打电话sdCardRoot.getAbsolutePath() + "path"

此外,请确保您已允许模拟器使用一定数量的内存用于外部存储。

于 2013-07-03T14:30:11.907 回答