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数组包含相对路径。我想获得每个文件的绝对路径。有没有办法在跨平台(Win、Linux、MacOS)的 Java 中做到这一点?

4

1 回答 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]);
    }
}

如果您需要路径作为 a String,您当然可以在结果s上使用该getAbsolutePath()方法。File

于 2012-02-21T05:53:41.407 回答