繁体   English   中英

从SD卡的所有目录中检索所有视频文件

[英]Retrieve all video files from all directories of SD card

我正在制作媒体播放器。 我想让所有视频都显示在SD卡中

如果视频可直接在sd卡的顶级目录中找到,则很简单。 但是视频文件的内容存在于嵌套目录结构中,例如

目录->目录->目录-> file.mp4。

如何在嵌套目录结构中搜索文件?

您可以创建一个列表,该列表可以存储SD卡上存在的所有视频文件的位置。 运行一个循环,该循环将访问每个文件夹,并在给定文件格式(如果是视频文件或.mp4)的情况下更新此数组,并将其添加到数组。 您可以将该列表存储到持久性存储中,以便下次启动应用程序时可以读取它。

这是示例代码,可以帮助您列出sdcard中的所有文件

public ArrayList<File> getfile(File dir) {
    File listFile[] = dir.listFiles();
    if (listFile != null && listFile.length > 0) {
        for (int i = 0; i < listFile.length; i++) {
            if (listFile[i].isDirectory()) {
                fileList.add(listFile[i]);
                getfile(listFile[i]);
            } else {
                if (listFile[i].getName().endsWith(".png")
                    || listFile[i].getName().endsWith(".jpg")
                    || listFile[i].getName().endsWith(".jpeg")
                    || listFile[i].getName().endsWith(".gif")) {
                    fileList.add(listFile[i]);
                }
            }
        }
    }
    return fileList;
}

使用Apache FileUtils:

import org.apache.commons.io.FileUtils;

String path = ...;
String[] extensions = {"mp4", "mov", ...};
Collection<File> allMovies = FileUtils.listFiles(new File(path), extensions, true);

发布此消息,也许会帮助需要帮助的人。 正如@Jaqen H'ghar所说的...我只是简化代码以添加您要显示的扩展名列表。

File filePath = new File(Environment.getExternalStorageDirectory().getAbsolutePath());

        List<String> fileList = new ArrayList<>();


        String[] extensions = {"apk","mp3","mp4","or what ever extension u want"};
        Collection<File> allMovies = FileUtils.listFiles(new File(String.valueOf(filePath)), extensions, true);


        for (File file: allMovies) {


                fileList.add(file.getName());

        }

暂无
暂无

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

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