【问题标题】:Android: How to list all the files in a directory in to an array?Android:如何将目录中的所有文件列出到数组中?
【发布时间】:2015-03-15 19:17:02
【问题描述】:

我有一个变量“目录路径”。它具有 sd 卡中目录的路径。

Ex: "sdcard/images/scenes"

现在,我想列出“目录路径”中的所有文件,并希望有一个数组来存储其中的所有文件名。

Ex: Array[0]= Filename1, Array[1]= Filename2 Etc... 

我尝试了Array[] myArray = directorypath.listfile(); 之类的方法,但没有成功..! 谁能给我代码或至少帮助我?非常感激。

【问题讨论】:

  • “没用”是什么意思? “目录路径”变量是什么类型的?
  • 抱歉没有提及。没用,我的意思是,我在数组中得到了垃圾值。类似'jLoF01548'等的东西。对于该数组中的所有项目都是一样的。 directorypath 是一个字符串变量。
  • String 类没有 listfile() 方法,因此程序没有编译时出现异常,或者 directorypath 是不同的变量类型。顺便说一句,您的问题纯粹是一个 Java 问题。回答这个问题不需要任何关于 Android 的特定内容。

标签: android arrays file android-file


【解决方案1】:

试试下面可能对你有帮助的代码

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 {
                inFiles.add(file);
        }
    }
    return inFiles;
}

这将返回您指定目录下的文件列表。
从列表中的文件对象..您将获得有关所需文件的所有信息。

【讨论】:

  • 谢谢你的代码但是.. File[] files = parentDir.listFiles();给出错误'无法解析 listFiles();我正在使用 Android Studio。
  • 检查here .. 文件类有方法listFiles()。检查你的进口。
【解决方案2】:

我认为您面临的问题与外部存储目录文件路径有关。如果您可以通过环境访问,请不要使用整个路径作为变量。

String path = Environment.getExternalStorageDirectory().toString()+"/images/scenes"; 

此外,您可以将 API listfiles() 与文件对象一起使用,它会起作用。例如::

File f = new File(path);        
File file[] = f.listFiles();

【讨论】:

    【解决方案3】:

    根据您的错误消息“无法解析 listFiles()”,您正试图在 String 对象上调用方法,而实际上您想在 File 对象上调用该方法。

    创建一个新的文件对象,

    String parentDirectory = "path/to/files";
    File dirFileObj = new File(parentDirectory);
    File[] files = dirFileObj.listFiles();
    

    【讨论】:

      【解决方案4】:

      我确实在为不正确的数据类型调用函数。即,listfiles() 不适用于字符串类型变量..!!

      所以,我创建了一个 File 类型变量和一个 File[] 数组来传递文件列表..! 这解决了问题。

      【讨论】:

        【解决方案5】:

        非常简单,只需两行代码

         File mListofFiles = new File(Environment.getExternalStorageDirectory.getAbsolutePath()+"/",childpath:Foldername);
         File f = new File(mListofFiles.toString());        
         File file[] = f.listFiles();     
        

        【讨论】:

          【解决方案6】:

          试试下面的代码:

          File externalStorageDirectory = Environment.getExternalStorageDirectory();
          File folder = new File(externalStorageDirectory.getAbsolutePath() + "/FilePath");
          File file[] = folder.listFiles();
          if (file.length != 0) {
              for (int i = 0; i < file.length; i++) {
                  //here populate your list
              }
          } else {
              //no file available
          }
          

          【讨论】:

          • 我知道这可能是旧的,但我正在为我的应用程序尝试这条线。就目前而言。我只有一个按钮,我按下它来告诉我我的目录中是否有任何文件。现在当我按下它时,应用程序崩溃并停止工作。我已将范围缩小到您编写的这段代码的第二行。你能告诉我是否有办法检查第 2 行是否已设置?像 isset 方法?
          猜你喜欢
          • 2015-06-13
          • 1970-01-01
          • 1970-01-01
          • 2014-03-08
          • 2017-02-16
          • 2011-06-13
          • 2011-03-13
          相关资源
          最近更新 更多