如何列出特定目录下的所有文件(扩展名和没有扩展名)

时间:2018-02-22 05:06:01

标签: android file fileutils hidden-files

我目前能够获取具有特定文件扩展名的所有文件

private List<String> getListFiles(File parentDir) {

    ArrayList<String> inFiles = new ArrayList<String>();

    File[] files = parentDir.listFiles();

    for (File file : files) {
        if (file.isDirectory()) {

                inFiles.addAll(getListFiles(file));
        }
        else {
            if (file.getName().endsWith(".jpg")||file.getName().endsWith(".jpeg")) {
                inFiles.add(file.getAbsolutePath());
            }


                Log.d("fullpath", "full path is" + file.getAbsolutePath());
            }
    }

    return inFiles;
 }

但目录中还有一些文件没有任何扩展名。我也想列出那些文件。我试过这个方法。但我无法列出这些文件。

String fileName=FilenameUtils.getBaseName(file.getName());
inFiles.add(fileName);

如何实现这一目标?请帮帮我。

3 个答案:

答案 0 :(得分:1)

您正在检查代码中的文件扩展名。如果你这样修改你的代码,你也会得到其他文件。

private List<String> getListFiles(File parentDir) {

    ArrayList<String> inFiles = new ArrayList<String>();

    File[] files = parentDir.listFiles();

    for (File file : files) {
        if (file.isDirectory()) {

                inFiles.addAll(getListFiles(file));
        }
        else {
               inFiles.add(file.getAbsolutePath());
        }
    }

    return inFiles;
 }

答案 1 :(得分:1)

您可以使用此方法

private static void getListFiles(File mInputDir,ArrayList<File> mFilesExt,ArrayList<File> mFilesNoExt) {
    File[] files = mInputDir.listFiles();
    for (File file : files) {
        if (file.isDirectory()) {
            getListFiles(file,mFilesExt,mFilesNoExt);
        }
        else {
            if (file.getName().contains(".")) {
                mFilesExt.add(file);
            }else{
                mFilesNoExt.add(file);
            }
        }
    }
}

并使用您的输入目录调用此方法以扫描带有/不带扩展名的文件数组

File mInputDir = new File("/sdcard/Pictures/your_dir");
ArrayList<File> mFilesExt = new ArrayList<>();
ArrayList<File> mFilesNoExt = new ArrayList<>();

getListFiles(mInputDir,mFilesExt,mFilesNoExt);

答案 2 :(得分:0)

首先将所有Filepath存储在一个arraylist中,然后尝试以下代码:

 if (arrayList_filenames.size() != 0) {

       for(int count = 0;count<arrayList_filenames.size() !=0){
            String extension = arrayList_filenames.get(count).toString().substring(arrayList_filenames.get(count).toString().lastIndexOf("."));
            Log.d("displayingextension", "****    " + extension);
          }
        }