我现在有一个从目录中选择文件的应用程序。我想要做的是能够具有一个功能,您可以在其中放入文件扩展名,例如.gif
等.txt
。单击按钮后,应用程序将运行目录并查找并选择该类型的所有文件。我必须显示的唯一代码是我当前的应用程序,它没有这些。希望能找到正确的方向或一些建议。
问问题
2746 次
4 回答
3
对于 a 中的使用JFileChooser
,到目前为止提供的所有答案都是次优的。而是实施 JFileChooser.setFileFilter(javax.swing.filechooser.FileFilter)
以获得最佳用户体验。
它可能最终看起来像这样1:
- 使用由A Sample FileChooser Program提供的代码获得的图像。
于 2012-11-16T07:14:18.480 回答
3
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;
}
于 2012-11-16T05:46:26.020 回答
2
您正在寻找的可能是java.io.File#list(filter)。
编辑:如果要搜索整个文件系统,则需要递归扫描每个目录:
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());
}
于 2012-11-16T05:53:19.747 回答
1
FilenameFilter filter = new FilenameFilter() {
public boolean accept(File dir, String name) {
return (!name.endsWith(".gif")
}
};
于 2012-11-16T05:47:05.350 回答