如何读取 android 的 Internal/External 存储中存在的文件的文件名

How to read file names of the files that are present in the android's Internal/External storage

我正在尝试为 android 编写我自己的文件管理器。我想知道的是如何读取 external/internal 存储中存在的所有文件的文件名? 我想读取文件名并将它们显示在列表视图中,以便用户可以查看哪个文件夹中存在哪些文件。我知道这件事将以递归方式工作,因为我还必须读取子目录的内容。

以下代码将为您提供 android sdcard 中的文件列表:

/**
 * Return list of files from path. <FileName, FilePath>
 *
 * @param path - The path to directory with images
 * @return Files name and path all files in a directory, that have ext = "jpeg", "jpg","png", "bmp", "gif"  
 */
private List<String> getListOfFiles(String path) {

    File files = new File(path);

    FileFilter filter = new FileFilter() {

        private final List<String> exts = Arrays.asList("jpeg", "jpg",
                "png", "bmp", "gif");

        @Override
        public boolean accept(File pathname) {
            String ext;
            String path = pathname.getPath();
            ext = path.substring(path.lastIndexOf(".") + 1);
            return exts.contains(ext);
        }
    };

    final File [] filesFound = files.listFiles(filter);
    List<String> list = new ArrayList<String>();
    if (filesFound != null && filesFound.length > 0) {
        for (File file : filesFound) {
           list.add(file.getName());
        }
    }

    return list;
}

您也可以调用相同的方法来获取子目录文件。

这是你必须做的。在开始写作之前,请参考 java 中的文件 class。这将帮助您清除很多东西。 下面是提供文件列表的片段。

            File directory = new File(path);

            File[] listFiles = directory.listFiles();

            if (listFiles != null) {

                for (File file : listFiles) {
                    if (file.isDirectory())
                           // do the stuff what you need
                    else if (file.isFile()) {
                           // do the stuff what you need
                        }
                    }
                }
            }