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

としてパスが必要な場合Stringは、もちろんgetAbsolutePath()、結果の でメソッドを使用できますFile

于 2012-02-21T05:53:41.407 に答える