[Seasar-user:18239] org.seasar.framework.util.URLUtil.toFile(URL)メソッドの実装に関する質問

Toshiaki Takashima [E-MAIL ADDRESS DELETED]
2009年 8月 10日 (月) 16:53:19 JST


高島と申します。


Seasarのソースを読んで勉強しているのですが、掲題のメソッドの実装について
ご教授をお願いしたい点がございます。以下、実装部分です。

public static File toFile(final URL fileUrl) {
  try {
    final String path = URLDecoder.decode(fileUrl.getPath(), "UTF-8"); --- (1)
    return new File(path).getAbsoluteFile(); --- (2)
  } catch (final Exception e) {
    throw new SRuntimeException("ESSR0091", new Object[] { fileUrl }, e);
  }
}

私の理解では、引数となるURLインスタンスには、ClassLoader.findResourceの
戻り値が指定されているようでした。

ここで、(1)にてURLからパス部分を取得しているわけですが、エンコーディング
を"UTF-8"固定で取得しているところが、まず理解できませんでした。色々と
調べてみたのですが、ClassLoader.findResourceの戻り値であるURL
インスタンスのgetPath値が、UTF-8でエンコーディングされている、という
情報を得ることができなかったからです(もちろんこちらのメソッドは
正常動作していることを確認しおります)。

また、returnしているFileインスタンスですが、getAbsoluteFile()している
ところが理解できませんでした。そのままnew File(path)で良いのではないか
と疑問に思いました。

私の考えでは、toFileメソッドの実装は以下のようにすれば良いのではないか
と思うのですが。

public static File toFile(final URL fileUrl) {
  try {
    return new File(fileUrl.toURI());
  } catch (final Exception e) {
    throw new SRuntimeException("ESSR0091", new Object[] { fileUrl }, e);
  }
}


Seasarのメーリングリストにて、このような内部実装に関する質問をするのは
お門違いかもしれませんが、どなたか参考情報などをご教示頂けるとありがたい
です。



以上よろしくお願いします。






Seasar-user メーリングリストの案内