Java プラットフォーム 1.2

java.net
クラス URL

java.lang.Object
  |
  +--java.net.URL

public final class URL
extends Object
implements Serializable

URL クラスは、World Wide Web 上の「リソース」を指すポインタである URL (Uniform Resource Locator) を表します。リソースは、ファイルやディレクトリのような単純なものであることも、もっと複雑なオブジェクト (データベースや検索エンジンへのクエリーなど) への参照であることもあります。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」または「参照 (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)
          指定されたプロトコル名、ホスト名、ファイル名を使って、絶対 URL を作成します。
URL(URL context, String spec)
          指定されたコンテキストで spec の指定を解析することにより、URL を作成します。
URL(URL context, String spec, URLStreamHandler handler)
          指定された context 内で spec 引数の指定を解析することにより、URL を作成します。
 
メソッドの概要
 boolean equals(Object obj)
          2 つの URL を比較します。
 Object getContent()
          この URL のコンテンツを返します。
 String getFile()
          この URL のファイル名を返します。
 String getHost()
          この URL のホスト名を返します (設定されている場合)。
 int getPort()
          URL のポート番号を返します。
 String getProtocol()
          この URL のプロトコル名を返します。
 String getRef()
          この 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 のフィールドを設定します。
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 オブジェクトを作成します。port 番号に -1 を指定すると、URL はプロトコルのデフォルトのポートを使うようになります。

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

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

このメソッドの機能は、引数に protocolhost-1file を指定して 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 - ストリームハンドラ
例外:
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
指定されたコンテキストで spec の指定を解析することにより、URL を作成します。context 引数が null でなく、spec 引数が部分的な URL 指定である場合は、不足しているコンポーネントの文字列は context 引数から継承されます。

spec 引数に指定された内容が、特定のプロトコルを指定しているかどうかが解析されます。spec の中で、最初に出現した ASCII 文字のスラッシュ (「/」) の前に ASCII 文字のコロン (「:」) がある場合は、そのコロンよりも前にある文字列によりプロトコルが指定されます。

次のコンストラクタは、次に示すような、URLStreamHandler の型の適切なストリームプロトコルハンドラを探します。

     java.net.URL#URL(java.lang.String, java.lang.String, int,
                      java.lang.String)
 
ストリームプロトコルハンドラの parseURL メソッドが呼び出すことにより、指定の残りのフィールドが解析され、context 引数によるデフォルト設定がオーバーライドされます
パラメータ:
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
指定された context 内で spec 引数の指定を解析することにより、URL を作成します。context 引数が null ではなく、spec 引数が部分的な URL である場合、不足しているコンポーネントのすべての文字列は context 引数から継承されます。

String 引数に指定した値が解析され、それがプロトコルを表しているかどうかが判別されます。String 内の最初の ASCII 文字のスラッシュ「/」よりも前に ASCII 文字のコロン「:」がある場合、コロンよりも前の文字がプロトコルになります。

引数 handler が指定されている場合は、それを URL のストリームハンドラとして使い、context のストリームハンドラをオーバーライドします。ストリームハンドラの指定には、"specifyStreamHandler" への NetPermission が必要です。それがない場合は SecurityException がスローされます。

そうでない場合は、handler が null で context が有効であるときは、context のプロトコルハンドラが継承されます。ストリームプロトコルハンドラの parseURL メソッドを呼び出して spec の残りのフィールドを解析し、context 引数によって設定されたデフォルト値をすべてオーバーライドします。

パラメータ:
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 - 参照

getPort

public int getPort()
URL のポート番号を返します。ポートが設定されていない場合は -1 を返します。
戻り値:
ポート番号

getProtocol

public String getProtocol()
この URL のプロトコル名を返します。
戻り値:
この URL のプロトコル

getHost

public String getHost()
この URL のホスト名を返します (設定されている場合)。「file」プロトコルの場合、ホスト名は空の文字列になります。
戻り値:
この URL のホスト名

getFile

public String getFile()
この URL のファイル名を返します。
戻り値:
この URL のファイル名

getRef

public String getRef()
この URL のアンカー (「参照」とも呼ばれる) を返します。
戻り値:
この URL のアンカー (「参照」とも呼ばれる)

equals

public boolean equals(Object obj)
2 つの URL を比較します。 引数が null ではなく、このオブジェクトと同じ URL を表す URL オブジェクトである場合にだけ、結果が true になります。 2 つの URL オブジェクトが等しいと判断するための条件は、プロトコル、参照先ホスト、ホスト上のポート番号、およびホスト上のファイルとアンカーが等しいことです。
パラメータ:
obj - 比較対象の URL
戻り値:
オブジェクトが同じである場合は true、そうでない場合は false
オーバーライド:
クラス Object 内の equals

hashCode

public int hashCode()
ハッシュテーブルのインデックス付けに適した int 値を作成します。
戻り値:
この URL に使うハッシュコード
オーバーライド:
クラス Object 内の hashCode

sameFile

public boolean sameFile(URL other)
2 つの URL の「参照」フィールド以外の部分を比較します。この URLother 引数がどちらも同じリソースを参照している場合は true を返します。2 つの URL は同じアンカーを含んでいない可能性があります。
パラメータ:
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 のプロトコルについては、専用の URLConnection の public サブクラスが、java.lang、java.io、java.util、または java.net のパッケージ内、あるいはそのサブパッケージ内に存在します。返される接続は、そのサブクラスのものになります。たとえば、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()

setURLStreamHandlerFactory

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

アプリケーションの URLStreamHandlerFactory を設定します。アプリケーションからは、このメソッドを最大で 1 回しか呼び出すことができません。

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

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

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.