JavaTM 2
Platform
Std. Ed. v1.4.0

java.net
クラス URL

java.lang.Object
  |
  +--java.net.URL
すべての実装インタフェース:
Serializable

public final class URL
extends Object
implements Serializable

URL クラスは、World Wide Web 上の「リソース」を指すポインタである URL (Uniform Resource Locator) を表します。リソースは、ファイルやディレクトリのような単純なものであることも、もっと複雑なオブジェクト (データベースや検索エンジンへのクエリーなど) への参照であることもあります。URL のタイプとその形式についての詳細は、次の Web サイトで参照することができます。

http://archive.ncsa.uiuc.edu:80/SDG/Software/Mosaic/Demo/url-primer.html

一般に、URL はいくつかの部分に分かれています。上記の例の URL は、使用するプロトコルが http (HyperText Transfer Protocol) であることと、www.ncsa.uiuc.edu という名前のホスト上に情報があることを示しています。そして、ホストマシン上にある情報の名前は /demoweb/url-primer.html です。ホストマシン上にある情報の名前の正確な意味は、プロトコル、およびホストの両方に依存しています。一般的には情報はファイル内に保存されていますが、動的に生成される場合もあります。URL のこうした部分はパスコンポーネントと呼ばれます。

URL にはオプションで「ポート」を指定することができます。これは、TCP 接続を確立するリモートホストマシン上のポート番号を表します。ポート番号を指定しない場合は、そのプロトコルのデフォルトのポート番号が使用されます。たとえば、http のデフォルトのポート番号は 80 です。別のポートを使用する場合は、たとえば次のように指定します。

     http://archive.ncsa.uiuc.edu:80/SDG/Software/Mosaic/Demo/url-primer.html
 

URL の構文は、「RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax」で定義され、「RFC 2732: Format for Literal IPv6 Addresses in URLs」で修正されています。

URL には「フラグメント」(「ref」または「参照 (reference)」とも呼ぶ) を追加できます。フラグメントを指定するには、シャープ記号「#」のあとに文字列を指定します。次にフラグメントの例を示します。

     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 から情報が継承されます。ただし、ファイルコンポーネントの指定は必須です。オプション指定のフラグメントは継承されません。

導入されたバージョン:
JDK1.0
関連項目:
直列化された形式

コンストラクタの概要
URL(String spec)
          String 表現から URL オブジェクトを作成します。
URL(String protocol, String host, int port, String file)
          指定された protocolhostport 番号、および file から URL オブジェクトを作成します。
URL(String protocol, String host, int port, String file, URLStreamHandler handler)
          指定された protocolhostport 番号、file、および handler を使って、URL オブジェクトを作成します。
URL(String protocol, String host, String file)
          指定された protocol 名、host 名、および file 名を使って、URL を作成します。
URL(URL context, String spec)
          指定されたコンテキスト内で指定された仕様を解析して URL を作成します。
URL(URL context, String spec, URLStreamHandler handler)
          指定されたコンテキスト内の指定されたハンドラで、指定された仕様を構文解析して URL を生成します。
 
メソッドの概要
 boolean equals(Object obj)
          この URL と別のオブジェクトとが等しいかどうかを比較します。
 String getAuthority()
          この URL の権限部分を取得します。
 Object getContent()
          この URL のコンテンツを取得します。
 Object getContent(Class[] classes)
          この URL のコンテンツを取得します。
 int getDefaultPort()
          この URL に関連するプロトコルのデフォルトのポート番号を取得します。
 String getFile()
          この URL のファイル名を取得します。
 String getHost()
          該当する場合、この URL のホスト名を取得します。
 String getPath()
          この URL のパス部分を取得します。
 int getPort()
          この URL のポート番号を取得します。
 String getProtocol()
          この URL のプロトコル名を取得します。
 String getQuery()
          この URL のクエリー部分を取得します。
 String getRef()
          この URL のアンカー (「参照」とも呼ばれる) を取得します。
 String getUserInfo()
          この URL のユーザ情報部分を取得します。
 int hashCode()
          ハッシュテーブルのインデックス付けに適した int 値を作成します。
 URLConnection openConnection()
          URL が参照するリモートオブジェクトへの接続を表す URLConnection オブジェクトを返します。
 InputStream openStream()
          この URL への接続を確立し、その接続から読み込みを行うための InputStream を返します。
 boolean sameFile(URL other)
          フラグメントコンポーネント以外の 2 つの URL を比較します。
protected  void set(String protocol, String host, int port, String file, String ref)
          URL のフィールドを設定します。
protected  void set(String protocol, String host, int port, String authority, String userInfo, String path, String query, String ref)
          指定された URL の 8 フィールドを設定します。
static void setURLStreamHandlerFactory(URLStreamHandlerFactory fac)
          アプリケーションの URLStreamHandlerFactory を設定します。
 String toExternalForm()
          この URL の文字列表現を構築します。
 String toString()
          この URL の文字列表現を構築します。
 
クラス java.lang.Object から継承したメソッド
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

URL

public URL(String protocol,
           String host,
           int port,
           String file)
    throws MalformedURLException
指定された protocolhostport 番号、および file から URL オブジェクトを作成します。

host は、ホスト名またはリテラル IP アドレスとして表現できます。IPv6 のリテラルアドレスを使用する場合は、「RFC 2732」で指定されているように、角括弧 ([ および ]) で囲む必要があります。ただし、「RFC 2373: IP Version 6 Addressing Architecture」で定義されているリテラル IPv6 アドレスの形式も使用できます。

port 番号 -1 の指定は、URL がプロトコルのデフォルトのポートを使用することを示します。

指定されたプロトコルで最初に URL オブジェクトを作成するときには、そのプロトコルのためのストリームプロトコルハンドラオブジェクトが作成されます。このストリームプロトコルハンドラオブジェクトは、URLStreamHandler クラスのインスタンスです。

  1. 以前にアプリケーションが URLStreamHandlerFactory のインスタンスをストリームハンドラファクトリとして設定している場合は、そのインスタンスの createURLStreamHandler メソッドがプロトコル文字列を引数として呼び出されて、ストリームプロトコルハンドラを作成する
  2. まだ URLStreamHandlerFactory が設定されていない場合、あるいはファクトリの createURLStreamHandler メソッドが null を返した場合は、コンストラクタが次のシステムプロパティの値を探す
             java.protocol.handler.pkgs
         
    このシステムプロパティの値が null でなければ、値は、垂直スラッシュ文字 | で区切られた、パッケージのリストとして解釈される。コンストラクタは、次の名前のクラスをロードしようとする
             <package>.<protocol>.Handler
         
    ここで、<package> にはパッケージの名前が入り、<protocol> にはプロトコルの名前が入る。このクラスが存在しない場合、あるいはクラスは存在してもそれが URLStreamHandler のサブクラスではない場合には、リストにある次のクラスを試すことになる
  3. 以上の手順でもプロトコルハンドラが見つからなかった場合、コンストラクタはシステムのデフォルトパッケージからロードしようとする
             <system default package>.<protocol>.Handler
         
    このクラスが存在しない場合、あるいはクラスは存在してもそれが URLStreamHandler のサブクラスではない場合には、MalformedURLException がスローされる

このコンストラクタによる入力の検証は実行されません。

パラメータ:
protocol - 使用するプロトコル名
host - ホスト名
port - ホスト上でのポート番号
file - ホスト上のファイル
例外:
MalformedURLException - 未知のプロトコルとして指定された場合
関連項目:
System.getProperty(java.lang.String), setURLStreamHandlerFactory( java.net.URLStreamHandlerFactory), URLStreamHandler, URLStreamHandlerFactory.createURLStreamHandler( java.lang.String)

URL

public URL(String protocol,
           String host,
           String file)
    throws MalformedURLException
指定された protocol 名、host 名、および file 名を使って、URL を作成します。指定されたプロトコルのデフォルトのポートを使用します。

このメソッドの機能は、引数に protocolhost-1、および file を指定して 4 つの引数を受け取るコンストラクタを呼び出すのと同じです。このコンストラクタによる入力の検証は実行されません。

パラメータ:
protocol - 使用するプロトコル名
host - ホスト名
file - ホスト上のファイル
例外:
MalformedURLException - 未知のプロトコルとして指定された場合
関連項目:
URL(java.lang.String, java.lang.String, int, java.lang.String)

URL

public URL(String protocol,
           String host,
           int port,
           String file,
           URLStreamHandler handler)
    throws MalformedURLException
指定された protocolhostport 番号、file、および handler を使って、URL オブジェクトを作成します。port 番号に -1 を指定すると、URL ではプロトコルのデフォルトのポートが使われます。handlernull を指定すると、URL では次に示す、プロトコルのデフォルトのストリームハンドラが使われます。java.net.URL#URL(java.lang.String, java.lang.String,int, java.lang.String)。

ハンドラが null ではなく、セキュリティマネージャが存在する場合、NetPermission("specifyStreamHandler") アクセス権を指定してセキュリティマネージャの checkPermission メソッドが呼び出されます。この結果、SecurityException になることがあります。このコンストラクタによる入力の検証は実行されません。

パラメータ:
protocol - 使用するプロトコル名
host - ホスト名
port - ホスト上でのポート番号
file - ホスト上のファイル
handler - URL のストリームハンドラ
例外:
MalformedURLException - 未知のプロトコルとして指定された場合
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkPermission メソッドがストリームハンドラの明示的な指定を許可しない場合
関連項目:
System.getProperty(java.lang.String), setURLStreamHandlerFactory( java.net.URLStreamHandlerFactory), URLStreamHandler, URLStreamHandlerFactory.createURLStreamHandler( java.lang.String), SecurityManager.checkPermission(java.security.Permission), NetPermission

URL

public URL(String spec)
    throws MalformedURLException
String 表現から URL オブジェクトを作成します。

このコンストラクタは、1 番目の引数に null を指定して、引数が 2 つのコンストラクタを呼び出すことと同じです。

パラメータ:
spec - URL として解析される String
例外:
MalformedURLException - 文字列に指定されたプロトコルが未知である場合
関連項目:
URL(java.net.URL, java.lang.String)

URL

public URL(URL context,
           String spec)
    throws MalformedURLException
指定されたコンテキスト内で指定された仕様を解析して URL を作成します。指定された URL と RFC2396 の「リソース識別子の統一: 一般構文」で述べられている仕様の引数で、新しい URL が生成されます。
          <scheme>://<authority><path>?<query>#<fragment>
 
参照はスキーマ、権限、パス、クエリー、およびフラグメントの各部分に構文解析されます。パスコンポーネントが空でスキーマ、権限、およびクエリーの各コンポーネントが未定義の場合、新しい URL が現在のドキュメントへの参照となります。それ以外の場合は、仕様のフラグメント部分とクエリー部分が新しい URL に使われます。

指定された仕様でスキーマコンポーネントが定義され、そのスキーマコンポーネントがコンテキストのスキーマと一致しない場合、仕様だけに基づく絶対 URL として新しい URL が生成されます。そうでない場合は、スキーマコンポーネントはコンテキスト URL を継承します。

権限コンポーネントが仕様にある場合には、仕様は絶対的なものとして扱われ、仕様の権限とパスはコンテキストの権限とパスを置換します。仕様に権限コンポーネントがない場合、新しい URL の権限はコンテキストを継承します。

仕様のパスコンポーネントがスラッシュ文字 "/" で始まる場合、パスは絶対的なものとして扱われ、仕様のパスがコンテキストのパスを置換します。

それ以外の場合、RFC2396 で説明されているように、パスは相対パスとして扱われ、コンテキストパスに追加されます。また、この場合、".." および "." によって行われたディレクトリ変更を削除することで、パスは標準化されます。

URL 構文解析の詳細な説明については、RFC2396 を参照してください。

パラメータ:
context - 仕様を解析するコンテキスト
spec - URL として解析される String
例外:
MalformedURLException - プロトコルが指定されていないか、未知のプロトコルが見つかった場合
関連項目:
URL(java.lang.String, java.lang.String, int, java.lang.String), URLStreamHandler, URLStreamHandler.parseURL(java.net.URL, java.lang.String, int, int)

URL

public URL(URL context,
           String spec,
           URLStreamHandler handler)
    throws MalformedURLException
指定されたコンテキスト内の指定されたハンドラで、指定された仕様を構文解析して URL を生成します。

パラメータ:
context - 仕様を解析するコンテキスト
spec - URL として解析される String
handler - URL のストリームハンドラ
例外:
MalformedURLException - プロトコルが指定されていないか、未知のプロトコルが見つかった場合
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkPermission メソッドがストリームハンドラの指定を許可しない場合
関連項目:
URL(java.lang.String, java.lang.String, int, java.lang.String), URLStreamHandler, URLStreamHandler.parseURL(java.net.URL, java.lang.String, int, int)
メソッドの詳細

set

protected void set(String protocol,
                   String host,
                   int port,
                   String file,
                   String ref)
URL のフィールドを設定します。これは public メソッドではないので、URL フィールドを修正できるのは URLStreamHandlers だけです。それ以外の URL は定数です。

パラメータ:
protocol - 使用するプロトコル名
host - ホスト名
port - ホスト上でのポート番号
file - ホスト上のファイル
ref - URL の内部参照

set

protected void set(String protocol,
                   String host,
                   int port,
                   String authority,
                   String userInfo,
                   String path,
                   String query,
                   String ref)
指定された URL の 8 フィールドを設定します。これは public メソッドではないので、URL フィールドを修正できるのは URLStreamHandlers だけです。それ以外の URL は定数です。

パラメータ:
protocol - 使用するプロトコル名
host - ホスト名
port - ホスト上でのポート番号
authority - URL の権限部分
userInfo - ユーザ名およびパスワード
path - ホスト上のファイル
ref - URL の内部参照
query - この URL のクエリー部分
導入されたバージョン:
1.3

getQuery

public String getQuery()
この URL のクエリー部分を取得します。

戻り値:
この URL のクエリー部分。存在しない場合は null
導入されたバージョン:
1.3

getPath

public String getPath()
この URL のパス部分を取得します。

戻り値:
この URL のパス部分。存在しない場合は空の文字列
導入されたバージョン:
1.3

getUserInfo

public String getUserInfo()
この URL のユーザ情報部分を取得します。

戻り値:
この URL のユーザ情報部分。存在しない場合は null

getAuthority

public String getAuthority()
この URL の権限部分を取得します。

戻り値:
この URL の権限部分
導入されたバージョン:
1.3

getPort

public int getPort()
この URL のポート番号を取得します。

戻り値:
ポート番号。ポートが設定されていない場合は -1

getDefaultPort

public int getDefaultPort()
この URL に関連するプロトコルのデフォルトのポート番号を取得します。URL スキーマまたは URL の URLStreamHandler がデフォルトのポート番号を定義しない場合は、-1 が返されます。

戻り値:
ポート番号

getProtocol

public String getProtocol()
この URL のプロトコル名を取得します。

戻り値:
この URL のプロトコル

getHost

public String getHost()
該当する場合、この URL のホスト名を取得します。ホストの形式は RFC 2732 に準拠します。つまり、リテラル IPv6 アドレスの場合、このメソッドは角括弧 ([ および ]) で囲まれた IPv6 アドレスを返します。

戻り値:
この URL のホスト名

getFile

public String getFile()
この URL のファイル名を取得します。

戻り値:
この URL のファイル名。存在しない場合は空の文字列

getRef

public String getRef()
この URL のアンカー (「参照」とも呼ばれる) を取得します。

戻り値:
この URL のアンカー (「参照」とも呼ばれる)。存在しない場合は null

equals

public boolean equals(Object obj)
この URL と別のオブジェクトとが等しいかどうかを比較します。

指定されたオブジェクトが URL でない場合、このメソッドは直ちに false を返します。

2 つの URL オブジェクトが等しいのは、同じプロトコルを持ち、同じホストを参照し、ホスト上のポート番号が同じで、ファイルとファイルのフラグメントが同じ場合です。

2 つのホストが等価と見なされるのは、両方のホスト名が同じ IP アドレスに解決されるか、どちらかのホスト名を解決できない場合は、大文字小文字に関係なくホスト名が等しいか、両方のホスト名が null に等しい場合です。

ホスト比較には名前解決が必要なので、この操作はブロック操作です。

注: equals の定義された動作は、HTTP の仮想ホストと一致しないことが知られています。

オーバーライド:
クラス Object 内の equals
パラメータ:
obj - 比較対象の URL
戻り値:
オブジェクトが同じである場合は true、そうでない場合は false
関連項目:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
ハッシュテーブルのインデックス付けに適した int 値を作成します。

ハッシュコードは URL 比較に関連するすべての URL コンポーネントに基づいています。したがって、この操作はブロック操作です。

オーバーライド:
クラス Object 内の hashCode
戻り値:
この URL に使うハッシュコード
関連項目:
Object.equals(java.lang.Object), Hashtable

sameFile

public boolean sameFile(URL other)
フラグメントコンポーネント以外の 2 つの URL を比較します。

フラグメントコンポーネントを考慮しないで、この URLother 引数が等しい場合は、true を返します。

パラメータ:
other - 比較対象の URL
戻り値:
2 つの URL が参照するリモートオブジェクトが同じである場合は true、そうでない場合は false

toString

public String toString()
この URL の文字列表現を構築します。このオブジェクトのストリームプロトコルハンドラの toExternalForm メソッドを呼び出すことによって文字列が作成されます。

オーバーライド:
クラス Object 内の toString
戻り値:
このオブジェクトの文字列表現
関連項目:
URL(java.lang.String, java.lang.String, int, java.lang.String), URLStreamHandler.toExternalForm(java.net.URL)

toExternalForm

public String toExternalForm()
この URL の文字列表現を構築します。このオブジェクトのストリームプロトコルハンドラの toExternalForm メソッドを呼び出すことによって文字列が作成されます。

戻り値:
このオブジェクトの文字列表現
関連項目:
URL(java.lang.String, java.lang.String, int, java.lang.String), URLStreamHandler.toExternalForm(java.net.URL)

openConnection

public URLConnection openConnection()
                             throws IOException
URL が参照するリモートオブジェクトへの接続を表す URLConnection オブジェクトを返します。

この URL のプロトコルハンドラの openConnection メソッドを呼び出すたびに、新しい接続が開かれます。

HTTP や JAR などの、URL のプロトコルについては、java.lang、java.io、java.util、または java.net のパッケージ、あるいはそのサブパッケージに属する一般または特殊な URLConnection サブクラスがあります。返される接続は、そのサブクラスのものになります。たとえば、HTTP プロトコルに対しては HttpURLConnection が返され、JAR に対しては JarURLConnection が返されます。

戻り値:
URL への URLConnection
例外:
IOException - 入出力例外が発生した場合
関連項目:
URL(java.lang.String, java.lang.String, int, java.lang.String), URLConnection, URLStreamHandler.openConnection(java.net.URL)

openStream

public final InputStream openStream()
                             throws IOException
この URL への接続を確立し、その接続から読み込みを行うための InputStream を返します。このメソッドは次のメソッドの短縮形です。
     openConnection().getInputStream()
 

戻り値:
URL 接続から入力を読み込むための入力ストリーム
例外:
IOException - 入出力例外が発生した場合
関連項目:
openConnection(), URLConnection.getInputStream()

getContent

public final Object getContent()
                        throws IOException
この URL のコンテンツを取得します。このメソッドは次のメソッドの短縮形です。
     openConnection().getContent()
 

戻り値:
この URL のコンテンツ
例外:
IOException - 入出力例外が発生した場合
関連項目:
URLConnection.getContent()

getContent

public final Object getContent(Class[] classes)
                        throws IOException
この URL のコンテンツを取得します。このメソッドは次のメソッドの短縮形です。
     openConnection().getContent(Class[])
 

パラメータ:
classes - Java 型の配列
戻り値:
クラスの配列で指定されたタイプが最初に一致した、この URL のコンテンツオブジェクト。要求されたタイプがサポートされていない場合は null
例外:
IOException - 入出力例外が発生した場合
導入されたバージョン:
1.3
関連項目:
URLConnection.getContent(Class[])

setURLStreamHandlerFactory

public static void setURLStreamHandlerFactory(URLStreamHandlerFactory fac)
アプリケーションの URLStreamHandlerFactory を設定します。このメソッドは、使用する Java 仮想マシンで 1 回しか呼び出せません。

URLStreamHandlerFactory インスタンスは、プロトコル名からストリームプロトコルハンドラを構築するのに使用されます。

セキュリティマネージャが存在する場合、このメソッドは最初にセキュリティマネージャの checkSetFactory メソッドを呼び出すことにより、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。

パラメータ:
fac - 目的のファクトリ
例外:
Error - アプリケーションでファクトリがすでに設定されている場合
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkSetFactory メソッドがこの操作を許可しない場合
関連項目:
URL(java.lang.String, java.lang.String, int, java.lang.String), URLStreamHandlerFactory, SecurityManager.checkSetFactory()

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.