URL を扱う |
URL クラスには URL オブジェクトを問い合わせるためのメソッドがいくつか用意さ れている。 以下に示すアクセス機構メソッドを使うと、プロトコル、ホスト名、ポート番号、フ ァイル名を URL から取り出すことができる。
getProtocol()
- URL の構成要素のプロトコル識別子を返す。
getHost()
- URL の構成要素のホスト名を返す。
getPort()
- URL の構成要素のポート番号を整数で返す。 ポートが設定されていない場合は -1 を返す。
getFile()
- URL の構成要素のファイル名を返す。
getRef()
- URL の構成要素のリファレンスを返す。
注: すべての URL アドレスがこれらの構成要素をもっているとは限らないことに注意す る。URL クラスがこれらのメソッドを用意しているのは、HTTP URL がこれらの構成 要素を使用し、HTTP URL がたぶん最も多く使用される URL だからである。URL クラ スではいくぶん HTTP が中心的に扱われている。
これらの
getXXX()
メソッドを使用すると、その URL オブ ジェクトを作成するのに用いたコンストラクタにかかわらず、URL に関する情報を取 り出すことができる。URL クラスと、それに伴うアクセス機構メソッドでは、URL を解析し直す必要がまっ たくなくなっている! URL の文字列指定を与えるだけで、新規の URL オブジェク トを作成し、必要な情報に対してアクセス機構メソッドを呼び出せるのである。以下 に示す簡単なプログラム例は、文字列指定をもとに URL を作成した後、その URL の アクセス機構メソッドを使って URL を解析している。
次に、このプログラムが表示する出力を示す。import java.net.*; import java.io.*; class ParseURL { public static void main(String[] args) { URL aURL = null; try { aURL = new URL("http://java.sun.com:80/tutorial/intro.html#DOWNLOADING"); System.out.println("protocol = " + aURL.getProtocol()); System.out.println("host = " + aURL.getHost()); System.out.println("filename = " + aURL.getFile()); System.out.println("port = " + aURL.getPort()); System.out.println("ref = " + aURL.getRef()); } catch (MalformedURLException e) { System.out.println("MalformedURLException: " + e); } } }protocol = http host = java.sun.com filename = /tutorial/intro.html port = 80 ref = DOWNLOADINGgetRef() に関する注意
Java の JDK 1.0 リリースでは、getRef()
は、以下の 2 つのコンス トラクタのどちらかを使って URL を作成したときしか機能しない。URL(String absoluteURLSpecification); URL(URL baseURL, String relativeURLSpecification);たとえば、以下の文を使って URL を作成する場合を考える。
この場合、URL gamelan = new URL("http://www.gamelan.com/"); URL gamelanNetworkBottom = new URL(gamelan, "Gamelan.network.html#BOTTOM");getRef()
メソッドは、gamelanNetworkBottom
で起動されたときは "BOTTOM
" を正しく返す。しかし、次の文を使って (上記と同じ資源を参照する) URL を作成し た場合は、URL gamelanNetworkBottom = new URL("http", "www.gamelan.com", "Gamelan.network.html#BOTTOM");getRef()
メソッドは、不正に null を返してしまう。
URL を扱う |