如何访问SD卡并返回特定格式文件的数组?

4

我需要访问SD卡并返回不同格式的文件,其位置由用户输入。如何以编程方式实现此功能?

1个回答

6

Simondid,我相信这就是你要找的内容。

访问SD卡:在Android中读取SD卡上的特定文件

请记住检查媒体可用性:http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

创建文件过滤器:http://www.devdaily.com/blog/post/java/how-implement-java-filefilter-list-files-directory

mp3文件过滤器示例,创建以下过滤器类:

import java.io.*;

/**
 * A class that implements the Java FileFilter interface.
 * It will filter and grab only mp3
 */
public class Mp3FileFilter implements FileFilter
{
  private final String[] okFileExtensions = 
    new String[] {"mp3"};

  public boolean accept(File file)
  {
    for (String extension : okFileExtensions)
    {
      if (file.getName().toLowerCase().endsWith(extension))
      {
        return true;
      }
    }
    return false;
  }
}

然后根据之前访问sd卡的帖子,您将使用以下过滤器:

File sdcard = Environment.getExternalStorageDirectory();
File dir = new File(sdcard, "path/to/the/directory/with/mp3");

//THIS IS YOUR LIST OF MP3's
File[] mp3List = dir.listFiles(new Mp3FileFilter());

注意:代码比较简陋,您可能要确保sd卡按照上述提到的方式可用


谢谢你提供的精彩答案,但我在让过滤器工作方面遇到了困难。我需要它来测试媒体/音乐文件,目前只需要MP3格式的,请帮忙。 - user646481
我需要过滤器从给定文件夹返回所有的MP3文件。 - user646481
Simon,你可以通过在给定的目录/文件路径上使用String.contains(".mp3");来检查文件类型。 - Codeman
pheonixblade,谢谢你的提示,但我已经用以下方法解决了它。FileFilter filterDirectoriesOnly = new FileFilter() { public boolean accept(File file) { return file.getName().endsWith("mp3"); } }; Log.i("state", "filter don"); File[] sdDirectories = yourFile.listFiles(filterDirectoriesOnly); - user646481

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接