我想创建一个仅显示包含图像/ mp3 /音频的文件夹的功能



我在这里想要的是只显示包含图像或视频或mp3的文件夹和子文件夹。

    for (int i = 0; i < fileList.size(); i++) {
        TextView textView = new TextView(this);
        textView.setText(fileList.get(i).getName());
        textView.setPadding(5, 5, 5, 5);
        System.out.println(fileList.get(i).getName());
        if (fileList.get(i).isDirectory()) {
            textView.setTextColor(Color.parseColor("#000000"));
        }
        view.addView(textView);
    }
}
public ArrayList<File> getfile(File dir) {
    FilenameFilter filter = new FilenameFilter() {
        @Override
        public boolean accept(File dir, String filename) {
            File sel = new File(dir, filename);
            // Filters based on whether the file is hidden or not
            return (((sel.isFile() || sel.isDirectory()) && !sel.isHidden()));

        //...
        }
    };
    File listFile[] = dir.listFiles(new ImageFileFilter());
    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") || listFile[i].getName().endsWith(".mp3")) {
                    //fileList.add(listFile[i].getParentFile());
                    fileList.add(listFile[i]);
                }
            }
        }
    }
    return fileList;
}

我尝试了以下功能,但它仍然显示不包含图像或视频或mp3的文件夹

private boolean isImageFile(String filePath) {
    if (filePath.endsWith("JPG") || filePath.endsWith("PNG") || filePath.endsWith(".mp3"))
    // Add other formats as desired
    {
        return true;
    }
    return false;
}
private class ImageFileFilter implements FileFilter {
    @Override
    public boolean accept(File file) {
        if (file.isDirectory()) {
            return true;
        } else if (isImageFile(file.getAbsolutePath())) {
            return true;
        }
        return false;
    }
}
}

在接受函数中,你有代码return (((sel.isFile() || sel.isDirectory()) && !sel.isHidden()));

如果 sel.isDirectory 则返回 true,而不是返回 true,您需要搜索该目录中的所有文件并在其中查找媒体文件,并且仅在找到媒体文件时才返回 true。 这会将您的算法变成递归算法,如果您在文件系统中使用符号链接,可能会出现问题 - 您必须提防循环。 它还可能导致性能问题。

最新更新