2

在 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 中的任何替代方法?

4

2 回答 2

0

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

我在网上查找并创建了

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

我在这里创立了它

于 2014-07-09T20:58:00.973 回答
0

这是一个错误,它也会影响其他系统(请参阅bugzilla

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

但是,如果您的文件名称相同但路径不同,则此解决方案并不安全,并且可能导致打开错误的文件。

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

可悲的是,目前这是一个问题,即您有多信任您的用户不会搞砸他们的文件选择

于 2014-10-15T16:27:54.997 回答