在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中的任何替代路径?
答案 0 :(得分:0)
如果您指的是多个文件选择,则没有“好”的方式。
我在线查看并成立
我知道如何做这样的事情的唯一方法(可能有更好的方法)是允许选择多个文件然后getSelectedFiles(File [] someName)将它们抛入一个文件数组。
我在here
创立了它答案 1 :(得分:0)
这是一个错误,也影响其他系统(参见bugzilla)
现在我决定用File.exists()
检查所有文件路径,如果任何路径无效,则抛出一个检查过的异常。
此解决方案虽然不安全,但如果您的文件具有相同名称但路径不同,则会导致打开错误的文件。
另一个解决方案是禁用多个文件选择或使用FileDialog
做一些非常丑陋的黑客攻击
遗憾的是,目前这是一个问题,即您是否相信您的用户不会搞砸他们的文件选择