如何从不同文件夹中获取FileDialog的绝对路径

时间:2013-06-30 20:22:40

标签: java gtk swt

在SWT中打开多个文件的一种方法是使用FileDialog:

FileDialog dialog = new FileDialog(shell, SWT.MULTI);
dialog.open();

System.out.println(dialog.getFilterPath());
System.out.println(Arrays.toString(dialog.getFileNames()));

并且每个文件名都可以与过滤器路径连接。

除了文件位于对话框中的“最近使用”或“搜索”(GTK版本)所指定的不同文件夹中时,此操作才有效。过滤器路径最终仅适用于某些文件。

例如,如果路径是:

/path1/file1
/path2/file2

filterPath是'path1',fileNames是[file1,file2],所以缺少'path2'。

在这种情况下,有没有办法获得正确的路径,或SWT中的任何替代路径?

2 个答案:

答案 0 :(得分:0)

如果您指的是多个文件选择,则没有“好”的方式。

我在线查看并成立

  

我知道如何做这样的事情的唯一方法(可能有更好的方法)是允许选择多个文件然后getSelectedFiles(File [] someName)将它们抛入一个文件数组。

我在here

创立了它

答案 1 :(得分:0)

这是一个错误,也影响其他系统(参见bugzilla

现在我决定用File.exists()检查所有文件路径,如果任何路径无效,则抛出一个检查过的异常。

此解决方案虽然不安全,但如果您的文件具有相同名称但路径不同,则会导致打开错误的文件。

另一个解决方案是禁用多个文件选择或使用FileDialog做一些非常丑陋的黑客攻击

遗憾的是,目前这是一个问题,即您是否相信您的用户不会搞砸他们的文件选择