Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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
Java 从目录中筛选和选择文件_Java_Swing_File_Jfilechooser_Filefilter - Fatal编程技术网

Java 从目录中筛选和选择文件

Java 从目录中筛选和选择文件,java,swing,file,jfilechooser,filefilter,Java,Swing,File,Jfilechooser,Filefilter,我现在有一个从目录中选择文件的应用程序。我想做的是能够有一个功能,你可以把一个文件扩展名,如.gif,.txt等。。单击按钮后,应用程序将在目录中运行,并查找和选择该类型的所有文件。我要展示的唯一代码是我当前的应用程序,它没有这些功能。希望能找到正确的方向或一些建议。您所寻找的可能是正确的方向 private List<File> getMatchingFiles(File parent, final String extension) { File[] files = pa

我现在有一个从目录中选择文件的应用程序。我想做的是能够有一个功能,你可以把一个文件扩展名,如.gif,.txt等。。单击按钮后,应用程序将在目录中运行,并查找和选择该类型的所有文件。我要展示的唯一代码是我当前的应用程序,它没有这些功能。希望能找到正确的方向或一些建议。

您所寻找的可能是正确的方向

private List<File> getMatchingFiles(File parent, final String extension) {
    File[] files = parent.listFiles(new FileFilter() {

        public boolean accept(File dir) {
            String name = dir.getName();
            if(name.endsWith(extension)) {
                return true;
            }
        }
    });

    List<File> retval = Arrays.asList( files );
    return retval;
}
编辑:如果要搜索整个文件系统,则需要递归扫描每个目录:

public static void filter (String dirname, List<File> result) {
    try {
        for (String f : new File(dirname).list()) {
            String filename = dirname + f;
            File theFile = new File(filename);
            if (theFile.isDirectory()) {
                filter(filename + "/", result);
            } else if (new FileFilter() {
                public boolean accept(File pathname) {
                    return pathname.getName().endsWith(".gif");
                }
            }.accept(theFile)) {
                result.add(theFile);
            }
        }
    } catch (Exception e) {
        // may raise null-pointer when access denied
    }
}

public static void main(String[] args) {
    List<File> result = new ArrayList<File>();
    filter("F:/", result);

    System.out.println(result.size());
}

你要找的可能是最新的

编辑:如果要搜索整个文件系统,则需要递归扫描每个目录:

public static void filter (String dirname, List<File> result) {
    try {
        for (String f : new File(dirname).list()) {
            String filename = dirname + f;
            File theFile = new File(filename);
            if (theFile.isDirectory()) {
                filter(filename + "/", result);
            } else if (new FileFilter() {
                public boolean accept(File pathname) {
                    return pathname.getName().endsWith(".gif");
                }
            }.accept(theFile)) {
                result.add(theFile);
            }
        }
    } catch (Exception e) {
        // may raise null-pointer when access denied
    }
}

public static void main(String[] args) {
    List<File> result = new ArrayList<File>();
    filter("F:/", result);

    System.out.println(result.size());
}
对于JFileChooser,目前为止提供的所有答案都是次优的。而是实现最佳的用户体验

它可能最终看起来像这样1:

使用提供的代码获取图像。 对于JFileChooser,目前为止提供的所有答案都是次优的。而是实现最佳的用户体验

它可能最终看起来像这样1:

使用提供的代码获取图像。
@贝什·古隆我没有投票。我什么都没试过。甚至不知道该如何处理。我知道如何按扩展名筛选文件,但不知道如何将它们全部放在一个地方,就像在硬盘上搜索特定文件一样type@Bhesh古隆我没有投票。我什么都没试过。甚至不知道该如何处理。我知道如何按扩展名筛选文件,但不知道如何将它们全部放在一个位置,就像在硬盘上搜索特定的文件类型现在我可以将其放入actionevent,只需为不同的文件类型添加不同的扩展名?我将有一个搜索按钮,例如,当您键入.jpg时,它将返回该类型的所有文件?顺便说一句,谢谢。现在我可以把它放到一个actionevent中,为不同的文件类型添加不同的扩展名?我将有一个搜索按钮,例如,当您键入.jpg时,它将返回该类型的所有文件?顺便说一句,谢谢。+1为最可怕的印刷屏幕从恐龙时代:-phaaaabrrrrr@healix不,永远不会,为什么要重新发明轮子,这是你的答案和正确的方法,为什么要在文件[]???@mKorbel中遍历,这是“我的朋友谷歌”提供的。我正在搜寻JFileChooser+FileFilter,并查看任何扩展列表的图像,……然后我拒绝了一个40Kb且可怕的图像和另一个71Kb的非常好的图像,并选择了@mKorbel确实是,但我的错,我现在应该链接到源代码了。@mKorbel:这是一个老式的屏幕截图。晚白垩世?:-+1适用于恐龙时代最糟糕的印刷屏幕:-phaaaabrrrrr@healix不,永远不会,为什么要重新发明轮子,这是你的答案和正确的方法,为什么要在文件[]???@mKorbel中遍历,这是“我的朋友谷歌”提供的。我正在搜寻JFileChooser+FileFilter,并查看任何扩展列表的图像,……然后我拒绝了一个40Kb且可怕的图像和另一个71Kb的非常好的图像,并选择了@mKorbel确实是,但我的错,我现在应该链接到源代码了。@mKorbel:这是一个老式的屏幕截图。晚白垩世?:-