如何从SWT的FileDialog获取文件的绝对路径?

4

我正在使用SWT的FileDialog让用户选择多个文件:

FileDialog dlg = new FileDialog(s, SWT.MULTI);
dlg.setFilterPath(somePath);
String fn = dlg.open();
if (fn != null)
  String [] files = dlg.getFileNames()

fn函数返回目录的绝对路径,而files数组包含相对路径。我想为每个文件获取绝对路径。是否有一种Java方法适用于各种平台(Win,Linux,MacOS)?

1个回答

7
你需要将文件名附加到给定的过滤器路径中。为了避免担心路径分隔符之类的问题,你可以使用File类。例如:
String[] filenames = dialog.getFileNames();
String filterPath = dialog.getFilterPath();

File[] selectedFiles = new File[filenames.length];

for(int i = 0; i < filenames.length; i++)
{
    if(filterPath != null && filterPath.trim().length() > 0)
    {
        selectedFiles[i] = new File(filterPath, filenames[i]);
    }
    else
    {
        selectedFiles[i] = new File(filenames[i]);
    }
}

如果您需要将路径作为String使用,那么您可以在结果为File的情况下使用getAbsolutePath() 方法。


如果用户更改了除FilterPath设置的目录之外的目录,会怎样? - Aakash
刚刚尝试过,当用户改变目录时,过滤器路径也会随之改变。 - rorold

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接