【问题标题】:How to get absolute paths from FileDialog from different folders如何从不同文件夹的 FileDialog 获取绝对路径
【发布时间】:2013-06-30 20:22:40
【问题描述】:

在 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 中有什么替代方法吗?

【问题讨论】:

  • +1 非常好的问题,我找不到任何解决方案。期待答案...

标签: java gtk swt


【解决方案1】:

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

我上网查了一下,成立了

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

我在here创建它

【讨论】:

    【解决方案2】:

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

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

    这种解决方案虽然不安全,但如果您的文件名称相同但路径不同,可能会导致打开错误的文件。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-09
      • 2011-08-30
      • 2023-02-14
      • 2019-01-17
      • 1970-01-01
      • 2023-01-26
      • 2021-10-18
      • 2019-01-17
      相关资源
      最近更新 更多