【问题标题】:Can't get files with ExternalStorageDirectory无法使用 ExternalStorageDirectory 获取文件
【发布时间】:2013-08-02 08:48:36
【问题描述】:

我发现当我使用下面的代码时,它可以在 AVD 上运行,但是当我在物理设备或 Bluestacks 上打开它时 - 列表是空的,即使音乐文件在 sdcard 上。有谁知道怎么回事?

而且,如果你知道如何让它从内存中读取文件,我将不胜感激,因为我发现 - 许多手机具有大内存容量并且它们不使用 sd 卡(其中一些甚至不能)。

代码如下:

static Uri[] mUris;
static String[] mFiles = null;
public static String[] getMusic(){

    File music = Environment.getExternalStorageDirectory();

    // File asd = Environment.

    // String[] savedFiles = getApplicationContext().fileList();

    File[] musicList = music.listFiles(new FilenameFilter() {

        @Override
        public boolean accept(File dir, String name) {
            // TODO Auto-generated method stub
            return ((name.endsWith(".mp3")||(name.endsWith(".wav"))));
        }
    });

    mFiles = new String[musicList.length];
    for(int i=0; i<musicList.length;i++) {
        mFiles[i]=musicList[i].getAbsolutePath();
    }

    return mFiles;
}

【问题讨论】:

  • listFiles 不是递归的。它列出了目录的内容,但不列出子目录的内容。您确定 /sdcard 中有以 mp3 或 wav 结尾的文件吗?
  • 它在子目录中。我不知道它只读取没有子目录的主文件夹。我该怎么做?

标签: android file listview android-sdcard


【解决方案1】:

我建议你先找到 SD 卡中的可用空间 阅读此文档可能会对您有所帮助 http://developer.android.com/reference/android/os/StatFs.html

【讨论】:

  • 我不知道应该用什么来查找可用空间。 @Stacks28:嗯,有些设备没有sd卡,所以我也需要这个。
  • 这就是我要说的 1. 查找 sd 卡是否可用 2. 如果你想放入 sd 卡,那么我建议检查可用空间
  • 哦,我现在明白了。我不需要放置任何东西 - 只需阅读 mp3 文件。我对你的理解正确吗?
  • Nope :/ 仍然无法阅读任何内容。我正在努力阅读文档,因为它列出了方法,但没有展示如何真正使用它们(或者至少我不知道 - 在他们的培训中有更多示例)。也许这就是问题所在——我无法阅读文档?
  • 好的,当你有空时通过邮件告诉我将在 stackoverflow 中聊天并解决问题
猜你喜欢
  • 2021-05-21
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多