Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从不同文件夹的FileDialog中获取绝对路径_Java_Gtk_Swt - Fatal编程技术网

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

Java 如何从不同文件夹的FileDialog中获取绝对路径,java,gtk,swt,Java,Gtk,Swt,在SWT中打开多个文件的一种方法是使用文件对话框: FileDialog dialog = new FileDialog(shell, SWT.MULTI); dialog.open(); System.out.println(dialog.getFilterPath()); System.out.println(Arrays.toString(dialog.getFileNames())); 每个文件名都可以与过滤器路径连接 除非文件位于对话框(GTK版本)中“最近使用”或“搜索”给出的不

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

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”,文件名为[file1,file2],因此缺少“path2”


在这种情况下,是否有任何方法可以获得正确的路径,或者SWT中的任何替代方法?

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

我上网查了一下,发现

我知道的唯一方法(可能还有更好的方法)是允许选择多个文件,然后getSelectedFiles(File[]someName)将它们放入一个文件数组中


我在

上发现了它这是一个bug,它也会影响其他系统(请参阅)

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

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

另一个解决方案是禁用多个文件选择,或者使用
FileDialog


可悲的是,现在的问题是,你有多信任你的用户,不让他们把文件选择搞砸了

+1很好的问题,我找不到任何解决办法。期待答案。。。