全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス
java.lang.Object | +----java.net.URL
URL は Uniform Resource Locator (World Wide Web 上の「リソース」を指すポインタ) を表します。リソースとは、ファイルやディレクトリのような単純なものであることも、もっと複雑なオブジェクト (データベースや検索エンジンへの問合せなど) への参照のこともあります。URL の種類とその形式についての詳細は、次の Web サイトで見ることができます。
http://www.ncsa.uiuc.edu/demoweb/url-primer.html
一般に、URL はいくつかの部分に分かれています。上記の例の URL は使用するプロトコルが
http (HyperText Transport Protocol) であることと、
www.ncsa.uiuc.edu という名前のホスト上に情報があることを表しています。そして、ホストマシン上にある情報の名前は demoweb/url-primer.html です。ホストマシン上にあるこの名前の正確な意味は、プロトコルとホストの両方に依存しています。一般的には情報は、ファイル内に保存されていますが、動的に生成されることもあります。情報は必ずしもファイル内にあるとは限りませんが、URL のこの部分は ファイル コンポーネントと呼ばれます。
URL には任意で「ポート」を指定することができます。これは TCP 接続を確立するリモートホストマシン上のポート番号を表します。ポート番号を指定しない場合は、そのプロトコルのデフォルトのポートが使用されます。たとえば、http のデフォルトのポートは 80 です。別のポートを使用する場合は、次のように指定します。
http://www.ncsa.uiuc.edu:8080/demoweb/url-primer.html
URL には「アンカー」(「ref」または「参照」とも呼ぶ) を追加することができます。アンカーを指定するには、シャープ記号「#」の後に文字をいくつか指定します。次にアンカーの例を示します。
http://java.sun.com/index.html#chapter1
このアンカーは、技術的に考えると URL の一部ではありません。どちらかというと、アンカーは指定のリソースを取り寄せたあと、そのドキュメントの中で chapter1 タグが付いている部分をアプリケーションが特別に扱うということを表します。このタグの意味はリソースによって異なります。
アプリケーションは「相対 URL」を指定することもできます。相対 URL は、別の URL を基準として相対的にリソースを検索するための情報だけを含んでいます。相対 URL は HTML ページ内でよく使われます。たとえば、次の URL があるとします。
http://java.sun.com/index.html
この HTML ページの中に次の相対 URL が含まれているとします。
FAQ.html
これは次の URL の短縮形とみなされます。
http://java.sun.com/FAQ.html
相対 URL には、URL のコンポーネントをすべて指定する必要がありません。プロトコルやホスト名、ポート番号を省略した場合には、完全修飾の URL の情報が継承されます。ただし、ファイルコンポーネントは必須です。任意指定のアンカーは継承されません。
String 表現から URL オブジェクトを作成する。
プロトコル、ホスト、ポート番号、ファイル から URL オブジェクトを作成する。
プロトコル名、ホスト名、ファイル名から絶対 URL を作成する。
spec を解析して URL を作成する。
URL のファイル名を返す。
URL のホスト名を返す (ある場合)。
URL のポート番号を返す。
URL のプロトコル名を返す。
URL のアンカー (「参照」とも呼ばれる) を返す。
URL によって表されるリモートオブジェクトへの接続を表す URLConnection オブジェクトを返す。
URL への接続を確立し、その接続から入力を受け取るための
InputStream を返す。
URLStreamHandlerFactory を設定する。
URL の文字列表現を作成する。
URL の文字列表現を作成する。
public URL(String protocol,
String host,
int port,
String file) throws MalformedURLException
プロトコル、ホスト、ポート番号、ファイルをもとに、URL オブジェクトを作成します。ポート番号に -1 を指定すると、そのプロトコルのデフォルトのポートが使用されます。
これが指定のプロトコルで作成した最初の URL オブジェクトである場合は、そのプロトコル用の ストリームプロトコルハンドラオブジェクト (URLStreamHandler クラスのインスタンス) が作成されます。
URLStreamHandlerFactory のインスタンスをストリームハンドラファクトリとして設定してある場合は、そのインスタンスの createURLStreamHandler メソッドが呼び出され、引数としてプロトコル文字列が渡されて、ストリームプロトコルハンドラが作成される。
URLStreamHandlerFactory がまだ設定されていない場合、またはファクトリの createURLStreamHandler メソッドが null を返した場合は、コンストラクタは次のシステムプロパティの値を探す。
java.handler.protol.pkgs
システムプロパティの値が null ではない場合は、縦棒「|」で区切られたパッケージのリストと解釈される。コンストラクタは次の名前のクラスをロードしようとする。
<package>.<protocol>.Handler
<package> はパッケージ名、<protocol> はプロトコル名を表す。このクラスが存在しない場合、またはクラスは存在するが URLStreamHandler のサブクラスではないという場合は、リスト内の次のパッケージを使って試行される。
sun.net.www.protocol.<protocol>.Handler
このクラスが見つからない場合、またはクラスは存在するが URLStreamHandler のサブクラスではないという場合は、MalformedURLException がスローされる。
public URL(String protocol,
String host,
String file) throws MalformedURLException
プロトコル 名、ホスト名、ファイル 名をもとに絶対 URL を作成します。指定したプロトコルのデフォルトのポートが使用されます。
このメソッドの機能は、protocol、host、-1、file の 4 つの引数を受け取るコンストラクタと同じです。
public URL(String spec) throws MalformedURLException
String 表現をもとに URL オブジェクトを作成します。
このコンストラクタの機能は、2 つの引数をもつコンストラクタを呼び出し、1 つ目の引数に null を指定するのと同じです。
String
public URL(URL context,
String spec) throws MalformedURLException
spec を解析することによって URL を作成します。context 引数が null ではなく、spec 引数が部分的な URL である場合、コンポーネントが不足しているすべての文字列は context 引数から継承されます。
String 引数に指定した値が解析され、それプロトコルを表しているかどうかが判別されます。String 内の最初の ASCII スラッシュ文字「/」よりも前に ASCII コロン「:」文字がある場合、コロンよりも前の文字がプロトコルになります。
spec 引数に指定した値がプロトコルではない場合は次のようになります。
null ではない場合は、context 引数のプロトコルが使用される。
null の場合は、MalformedURLException がスローされる。
spec 引数に指定した値がプロトコルの場合は次のようになります。
null または spec 引数とは異なるプロトコルを表す場合、context 引数は無視される。
null ではなく、spec 引数と同じプロトコルを表す場合、新規作成する URL に、context 引数のホスト、ポート番号 番号、ファイル がコピーされる。
その後、コンストラクタはURLStreamHandler 型の適切なストリームプロトコルハンドラを探します。
java.net.URL#URL(java.lang.String, java.lang.String, int,
java.lang.String)
ストリームプロトコルハンドラの parseURL メソッドを呼び出して specification ののこりのフィールドを解析し、context 引数によって設定されたすべてのデフォルト値を上書きします。
String 表現
protected void set(String protocol,
String host,
int port,
String file,
String ref)
public int getPort()
URL のポート番号を返します。
ポートが設定されていない場合は -1 を返します。
public String getProtocol()
URL のプロトコル名を返します。
URL のプロトコル
public String getHost()
URL のホスト名を返します (設定されている場合)。
「file」プロトコルの場合、ホスト名は空の文字列になります。
URL のホスト名
public String getFile()
URL のファイル名を返します。
URL のファイル名
public String getRef()
URL のアンカー (「アンカー」とも呼ばれる) を返します。
URL のアンカー (「参照」とも呼ばれる)
public boolean equals(Object obj)
null ではなく、このオブジェクトと同じ URL を表す URL オブジェクトである場合にだけ、結果が true になります。2 つの URL オブジェクトは、プロトコルが同じで、参照しているホスト、ホスト上のポート番号、ホスト上のファイルおよびアンカーが同じである場合に同じとみなされます。
true、同じではない場合は false
public int hashCode()
URL のハッシュコード
public boolean sameFile(URL other)
URL と other 引数がどちらも同じリソースを参照している場合は true を返します。2 つの URL は同じアンカーを含んでいない可能性があります。
URL
true、同じでない場合は false
public String toString()
URL の文字列表現を作成します。このオブジェクトのストリームプロトコルハンドラの toExternalForm メソッドを呼び出すことによって文字列が作成されます。
public String toExternalForm()
URL の文字列表現を作成します。このオブジェクトのストリームプロトコルハンドラの toExternalForm メソッドを呼び出すことによって文字列が作成されます。
public URLConnection openConnection() throws IOException
URL が参照するリモートオブジェクトへの接続を表す URLConnection オブジェクトを返します。
まだ接続が確立していない場合には、この URL のプロトコルハンドラの openConnection メソッドを呼び出すことによって接続が確立されます。
URLConnection
public final InputStream openStream() throws IOException
URL への接続を確立し、その接続から入力を受け取るための InputStream を返します。このメソッドは次のメソッドの短縮形です。
openConnection().getInputStream()
public final Object getContent() throws IOException
openConnection().getContent()
public static synchronized void setURLStreamHandlerFactory(URLStreamHandlerFactory fac)
URLStreamHandlerFactory を設定します。アプリケーションからこのメソッドを最大で 1 回しか呼び出すことができません。
URLStreamHandlerFactory インスタンスを使用すると、プロトコル名からストリームプロトコルハンドラを作成することができます。
全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス