如何获取android目录中的所有文件名?

时间:2013-07-03 14:21:24

标签: java android

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

继承我的代码:

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

}

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

4 个答案:

答案 0 :(得分:8)

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

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;
}

答案 1 :(得分:2)

更改

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

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

并确保目录path退出

答案 2 :(得分: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;

答案 3 :(得分:0)

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

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

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