繁体   English   中英

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

[英]How to get all the filenames in android directory?

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

这是我的代码:

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

}

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

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

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

更改

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

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

并确保目录path退出

只需检查一下:

  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;

由于sdCardRootFile实例,因此sdCardRoot+"path"将返回与sdCardRoot.toString() + "path"相同的东西。

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

另外,请确保已允许仿真器将一定数量的内存用于外部存储。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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