我正在尝试使用JFileChooser选择具有此名称格式的文件: LS48 * .drv 。 同时我想限制用户只查看一个特定的目录,如 c:\ data 。所以我不希望用户能够更改目录或其他驱动器名称。 我的代码段的基础可以请你提供一些提示:
m_fileChooser = new JFileChooser("c:\\data"); // looking for LS48*.drv files
m_fileChooser.setFileFilter(new FileNameExtensionFilter("drivers(*.drv, *.DRV)", "drv", "DRV"));
答案 0 :(得分:6)
您需要实现自己的FileFilter
子类,并将其设置为文件选择器而不是FileNameExtensionFilter
实例。
此子类中的accept
方法将类似于以下内容:
private static final Pattern LSDRV_PATTERN = Pattern.compile("LS48.*\\.drv");
public boolean accept(File f) {
if (f.isDirectory()) {
return false;
}
return LSDRV_PATTERN.matcher().matches(f.getName());
}
答案 1 :(得分:4)
要防止目录更改,请使用以下命令:
File root = new File("c:\\data");
FileSystemView fsv = new SingleRootFileSystemView( root );
JFileChooser chooser = new JFileChooser(fsv);
请检查:http://tips4java.wordpress.com/2009/01/28/single-root-file-chooser/
对于文件名模式,您可以使用java正则表达式。