Java 从目录中筛选和选择文件
我现在有一个从目录中选择文件的应用程序。我想做的是能够有一个功能,你可以把一个文件扩展名,如.gif,.txt等。。单击按钮后,应用程序将在目录中运行,并查找和选择该类型的所有文件。我要展示的唯一代码是我当前的应用程序,它没有这些功能。希望能找到正确的方向或一些建议。您所寻找的可能是正确的方向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
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:这是一个老式的屏幕截图。晚白垩世?:-