[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 メーリングリストの案内