Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 获取特定类型的所有文件的列表_Android_File_Types - Fatal编程技术网

Android 获取特定类型的所有文件的列表

Android 获取特定类型的所有文件的列表,android,file,types,Android,File,Types,是否有办法从SD卡获取特定类型的所有文件的列表?对于图像,我们有Media.images。同样,我们在API10下面有这样的框架吗?试试下面的代码 File dir = new File("path to directory"); String[] names = dir.list( new FilenameFilter() { public boolean accept(File dir, String name) {

是否有办法从SD卡获取特定类型的所有文件的列表?对于图像,我们有Media.images。同样,我们在API10下面有这样的框架吗?

试试下面的代码

File dir = new File("path to directory");

String[] names = dir.list(
    new FilenameFilter()
    {
        public boolean accept(File dir, String name)
        {
            return name.endsWith(".your file type");
            // Example
            // return name.endsWith(".mp3");
        }
    });

请注意,返回的字符串仅为文件名,不包含完整路径。

获取SD卡的路径,并将所有文件输入到
文件的数组中:

    File[] file = Environment.getExternalStorageDirectory().listFiles();  


    for (File f : file)
    {
       if (f.isFile() && f.getpath().endswith(".something")) { ... do stuff }
    }

这是我的音频文件过滤器(您可以根据您的场景更改扩展名列表)


我只是想找一个更简单的方法来做这项工作

如果您正在挑选一些常见的文件,如图像或视频,请使用库

对于任何其他类型,您都可以尝试apache的通用ios库

首先,

dependencies {
    implementation 'commons-io:commons-io:2.5'
}
那么

val iterator = FileUtils.iterateFiles(
    Environment.getExternalStorageDirectory(),
    FileFilterUtils.suffixFileFilter("pdf"),
    TrueFileFilter.INSTANCE)
while (iterator.hasNext()) {
    val fileINeed = iterator.next()
    // do your job
}
我以挑选PDF为例。它将自动处理子字典。所以迭代器包含我设备的所有PDF文件


它的API非常灵活、强大且易于使用。您可以添加许多筛选器或规则来完成特定的工作XD

我知道为时已晚,但以防万一。 我会用kotlin的方法做的

 val accepted_extention = listOf("mp3", "3gp", "mp4")
 val ROOT_DIR = Environment.getExternalStorageDirectory().absolutePath
 val ANDROID_DIR = File("$ROOT_DIR/Android")
 val DATA_DIR = File("$ROOT_DIR/data")
 File(ROOT_DIR).walk()
               // befor entering this dir check if
               .onEnter{ !it.isHidden // it is not hidden
                         && it != ANDROID_DIR // it is not Android directory
                         && it != DATA_DIR // it is not data directory
                && !File(it, ".nomedia").exists() //there is no .nomedia file inside
               }.filter { accepted_extention.indexOf(it.extension) > -1}// it is of accepted type
               .toList()

这只是sd卡下的文件,不包括在子文件夹中
val iterator = FileUtils.iterateFiles(
    Environment.getExternalStorageDirectory(),
    FileFilterUtils.suffixFileFilter("pdf"),
    TrueFileFilter.INSTANCE)
while (iterator.hasNext()) {
    val fileINeed = iterator.next()
    // do your job
}
 val accepted_extention = listOf("mp3", "3gp", "mp4")
 val ROOT_DIR = Environment.getExternalStorageDirectory().absolutePath
 val ANDROID_DIR = File("$ROOT_DIR/Android")
 val DATA_DIR = File("$ROOT_DIR/data")
 File(ROOT_DIR).walk()
               // befor entering this dir check if
               .onEnter{ !it.isHidden // it is not hidden
                         && it != ANDROID_DIR // it is not Android directory
                         && it != DATA_DIR // it is not data directory
                && !File(it, ".nomedia").exists() //there is no .nomedia file inside
               }.filter { accepted_extention.indexOf(it.extension) > -1}// it is of accepted type
               .toList()