- すべての実装されたインタフェース:
- Serializable
URLクラスは、Uniform Resource Locator (ユニフォーム・リソース・ロケータ)、つまりWorld Wide Web上の「リソース」へのポインタを表します。 リソースは、ファイルやディレクトリのような単純なものであることも、データベースや検索エンジンに対するクエリーなど、より複雑なオブジェクトへの参照であることもあります。 URLの種類や形式の詳細については、次を参照してください。  Types of URL 
 一般に、URLはいくつかの部分に分解できます。 次に例を示します。
     http://www.example.com/docs/resource1.html
 
 上記のURLは、使用すべきプロトコルがhttp (HyperText Transfer Protocol)であることと、www.example.comという名前のホスト・マシン上に情報が存在していることを示しています。 そのホスト・マシン上の情報には、/docs/resource1.htmlという名前が付けられています。 ホスト・マシン上におけるこの名前の正確な意味は、プロトコルとホストの両方に依存します。 一般的には情報はファイル内に保存されていますが、動的に生成される場合もあります。 URLのこうした部分はパス・コンポーネントと呼ばれます。 
 
 URLにはオプションで「ポート」を指定できます。これは、TCP接続の確立先となる、リモート・ホスト・マシン上のポート番号です。 ポートを指定しなかった場合は、代わりにプロトコルのデフォルト・ポートが使用されます。 たとえば、httpのデフォルト・ポートは80です。 次のように別のポートを指定することもできます。 
 
     http://www.example.com:1080/docs/resource1.html
 
 URLの構文は、「RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax」で定義され、「RFC 2732: Format for Literal IPv6 Addresses in URLs」で修正されています。 リテラルIPv6アドレス形式ではスコープIDもサポートされます。 スコープIDの構文や使用方法については、ここを参照してください。 
 
URLには「フラグメント」(「ref」または「参照(reference)」とも呼ぶ)を追加できます。 フラグメントは、シャープ記号文字「#」とそれに続くいくつかの文字によって示されます。 たとえば、
     http://www.example.com/index.html#chapter1
 
 本来は、このフラグメントはURLの一部ではありません。 たとえば、上に示したフラグメントは、指定されたリソースを取得したあと、そのドキュメントの中でchapter1というタグが付いている部分をアプリケーションによる処理の対象とすることを示します。 タグの意味はリソースによって異なります。 
 
アプリケーションは「相対URL」を指定することもできます。このURLには、別のURLを基準としてリソースを検索するのに必要な情報しか含まれていません。 相対URLはHTMLページ内でよく使用されます。 たとえば、次のURLがあるとします。
     http://www.example.com/index.html
 
     FAQ.html
 
     http://www.example.com/FAQ.html
 相対URLでは、URLのすべてのコンポーネントを指定する必要はありません。 プロトコルやホスト名、ポート番号を省略した場合には、すべてのコンポーネントが指定されているURLから値が継承されます。 ファイル・コンポーネントは指定しなければいけません。 オプション指定のフラグメントは継承されません。
 URLクラス自体がRFC2396に定義されたエスケープ・メカニズムに従ってURLコンポーネントのエンコードやデコードを行うことはありません。 URLの呼出し前にエスケープの必要なすべてのフィールドをエンコードしておくことは、呼出し元の責任です。URLから返されたすべてのエスケープ済みフィールドをデコードすることも、同様です。 さらに、URLは、URLエスケープの知識を持たないため、同じURLのエンコードされた形式とデコードされた形式の等価性を判断できません。 たとえば、次の2つのURLがあるとします。
 
 
http://foo.com/hello world/ and http://foo.com/hello%20worldこれらは、互いに等しくないと見なされます。
 URIクラスは特定の状況において、そのコンポーネント・フィールドに対してエスケープ処理を実行することに注意してください。 URLのエンコードとデコードを管理する際の推奨の方法は、URIを使用して、これら2つのクラス間の変換をtoURI()とURI.toURL()を使って行うことです。 
 
 URLEncoderクラスとURLDecoderクラスを使用することもできますが、これらはHTML形式のエンコーディング専用です。また、このエンコーディングは、RFC2396で定義されているエンコーディング方式と同じものではありません。
- APIのノート:
- ファイル・パスおよびファイルUriを操作するアプリケーションは、2つの間で変換する適切なメソッドを使用することを検討する必要があります。 Path.of(URI)ファクトリ・メソッドとFile(URI)コンストラクタを使用して、ファイルURIからPathまたはFileオブジェクトを作成できます。Path.toUri()とFile.toURI()は、ファイル・パスからURIを作成するために使用でき、URI.toURL()を使用してURLに変換できます。 アプリケーションは、FileまたはPathインスタンスの直接文字列表現からURLをconstructまたはparseしようとすることはありません。URLまたはURIの一部のコンポーネント(userinfoなど)は、先行するURLまたはURIの構築に不正に使用される可能性があります。 Urlまたはuriを処理するアプリケーションは、「RFC3986,セクション7,セキュリティに関する考慮事項」で推奨される推奨事項を考慮してください。 
- 導入されたバージョン:
- 1.0
- 関連項目:
- 
コンストラクタのサマリーコンストラクタコンストラクタ説明String表現からURLオブジェクトを生成します。指定されたprotocol、host、port番号、およびfileから、URLオブジェクトを作成します。URL(String protocol, String host, int port, String file, URLStreamHandler handler) 指定されたprotocol、host、port番号、file、およびhandlerから、URLオブジェクトを作成します。指定されたprotocol名、host名、およびfile名からURLを作成します。指定されたコンテキスト内の指定された仕様で構文解析することによって、URLを生成します。URL(URL context, String spec, URLStreamHandler handler) 指定されたコンテキスト内の指定されたハンドラで、指定された仕様を構文解析してURLを生成します。
- 
メソッドのサマリー修飾子と型メソッド説明booleanこのURLと別のオブジェクトとが等しいかどうかを比較します。このURLの機関部分を取得します。final ObjectこのURLのコンテンツを取得します。final ObjectgetContent(Class<?>[] classes) このURLのコンテンツを取得します。intこのURLに関連するプロトコルのデフォルトのポート番号を取得します。getFile()このURLのファイル名を取得します。getHost()該当する場合、このURLのホスト名を取得します。getPath()このURLのパス部分を取得します。intgetPort()このURLのポート番号を取得します。このURLのプロトコル名を取得します。getQuery()このURLのクエリー部分を取得します。getRef()このURLのアンカー(「参照」とも呼ばれる)を取得します。このURLのユーザー情報部分を取得します。inthashCode()ハッシュ表のインデックス付けに適したint値を作成します。URLが参照するリモート・オブジェクトへの接続を表すURLConnectionインスタンスを返します。openConnection(Proxy proxy) openConnection()と同じですが、指定されたプロキシを介して接続が行われます。プロキシをサポートしないプロトコル・ハンドラは、プロキシ・パラメータを無視し、通常の接続を作成します。final InputStreamこのURLへの接続を開き、その接続から読み込むためのInputStreamを返します。booleanフラグメント・コンポーネント以外の2つのURLを比較します。static voidアプリケーションのURLStreamHandlerFactoryを設定します。このURLの文字列表現を構築します。toString()このURLの文字列表現を構築します。toURI()このURLと等価なURIを返します。
- 
コンストラクタの詳細- 
URLpublic URL(String protocol, String host, int port, String file) throws MalformedURLException 指定されたprotocol、host、port番号、およびfileから、URLオブジェクトを作成します。hostは、ホスト名、リテラルIPアドレスのいずれかとして表現できます。 IPv6リテラル・アドレスを使用する場合は、RFC 2732で指定されているように、アドレスを角カッコ(「[」と「]」)で囲む必要があります。ただし、「RFC 2373: IP Version 6 Addressing Architecture」で定義されているリテラルIPv6アドレス形式も、使用可能です。port番号-1の指定は、URLがプロトコルのデフォルトのポートを使用することを示します。指定されたプロトコルで最初にURLオブジェクトを生成するときには、そのプロトコルのためのストリーム・プロトコル・ハンドラ・オブジェクトが生成されます。このストリーム・プロトコル・ハンドラ・オブジェクトは、 URLStreamHandlerクラスのインスタンスです。- 以前にアプリケーションがURLStreamHandlerFactoryのインスタンスをストリーム・ハンドラ・ファクトリとして設定している場合は、そのインスタンスのcreateURLStreamHandlerメソッドがプロトコル文字列を引数として呼び出されて、ストリーム・プロトコル・ハンドラを作成する。
- URLStreamHandlerFactoryがまだ設定されていない場合、または- createURLStreamHandlerメソッドが- nullを返した場合は、ServiceLoaderメカニズムを使用して、システム・クラス・ローダーを使用してURLStreamHandlerProvider実装を特定します。 プロバイダが配置される順序は実装固有であり、実装は配置されたプロバイダを自由にキャッシュできます。- createURLStreamHandlerからスローされたServiceConfigurationError、- Errorまたは- RuntimeExceptionが発生した場合は、呼び出しスレッドに伝播されます。 各プロバイダの- createURLStreamHandlerメソッド(インスタンス化されている場合)は、プロバイダが非nullを返すか、すべてのプロバイダが使い果たされるまで、プロトコル文字列とともに呼び出されます。
- 前のステップでプロトコル・ハンドラが見つからない場合、コンストラクタはシステム・プロパティの値を読み取ります:
     
 このシステム・プロパティの値がjava.protocol.handler.pkgsnullでなければ、値は、垂直スラッシュ文字「|」で区切られた、パッケージのリストとして解釈される。 コンストラクタは次の名前を持つクラスをロードしようとする。
 ここで、<package>.<protocol>.Handler<package>はパッケージの名前に置き換えられ、<protocol>はプロトコルの名前に置き換えられます。 このクラスが存在しない場合、あるいはクラスは存在してもそれがURLStreamHandlerのサブクラスではない場合には、リストにある次のパッケージを試すことになる。
- 前のステップでプロトコル・ハンドラが見つからない場合、コンストラクタは組み込みのプロトコル・ハンドラをロードしようとします。 このクラスが存在しない場合、またはクラスは存在するがURLStreamHandlerのサブクラスではない場合は、MalformedURLExceptionがスローされる。
 次のプロトコルのプロトコル・ハンドラは、検索パスに存在することが保証されます: - http
- https
- file
- jar
 このコンストラクタによる入力の検証は実行されません。 - パラメータ:
- protocol- 使用するプロトコル名。
- host- ホスト名。
- port- ホスト上でのポート番号。
- file- ホスト上のファイル
- 例外:
- MalformedURLException- 未知のプロトコルまたはポートが-1以外の負の数である場合
- 関連項目:
 
- 以前にアプリケーションが
- 
URLpublic URL(String protocol, String host, String file) throws MalformedURLException 指定されたprotocol名、host名、およびfile名からURLを作成します。 指定されたプロトコルのデフォルト・ポートが使用されます。このコンストラクタは、引数が4つのコンストラクタに相当し、指定されたプロトコルのデフォルト・ポートを使用する点のみが異なります。 このコンストラクタによる入力の検証は実行されません。 - パラメータ:
- protocol- 使用するプロトコル名。
- host- ホスト名。
- file- ホスト上のファイル。
- 例外:
- MalformedURLException- 不明なプロトコルが指定された場合。
- 関連項目:
 
- 
URLpublic URL(String protocol, String host, int port, String file, URLStreamHandler handler) throws MalformedURLException 指定されたprotocol、host、port番号、file、およびhandlerから、URLオブジェクトを作成します。port番号-1の指定は、URLがプロトコルのデフォルトのポートを使用することを示します。nullのhandlerを指定することは、URLでプロトコルのデフォルト・ストリーム・ハンドラを使用する必要があることを示します:URL(java.lang.String, java.lang.String, int, java.lang.String)ハンドラがnullではなく、セキュリティ・マネージャが存在する場合、 NetPermission("specifyStreamHandler")アクセス権を指定してセキュリティ・マネージャのcheckPermissionメソッドが呼び出されます。 その結果、SecurityExceptionが発生することがあります。 このコンストラクタによる入力の検証は実行されません。- パラメータ:
- protocol- 使用するプロトコル名。
- host- ホスト名。
- port- ホスト上でのポート番号。
- file- ホスト上のファイル
- handler- URLのストリーム・ハンドラ。
- 例外:
- MalformedURLException- 未知のプロトコルまたはポートが-1以外の負の数である場合
- SecurityException−セキュリティ・マネージャが存在し、セキュリティ・マネージャの- checkPermissionメソッドがストリーム・ハンドラの明示的な指定を許可しない場合。
- 関連項目:
 
- 
URLpublic URL(String spec) throws MalformedURLException String表現からURLオブジェクトを生成します。このコンストラクタは、1番目の引数に nullを指定して、引数が2つのコンストラクタを呼び出すことと同じです。- パラメータ:
- spec- URLとして構文解析される- String。
- 例外:
- MalformedURLException- プロトコルが指定されていないか、未知のプロトコルが見つかった場合、または- specが- nullの場合、または解析されたURLが関連プロトコルの特定の構文に準拠していない場合。
- 関連項目:
 
- 
URLpublic URL(URL context, String spec) throws MalformedURLException 指定されたコンテキスト内の指定された仕様で構文解析することによって、URLを生成します。 新しいURLは、RFC2396の「Uniform Resource Identifiers : Generic * Syntax」の説明に従って、指定されたコンテキストURLとspec引数から作成されます。
 参照はスキーム、機関、パス、クエリー、およびフラグメントの各部分に構文解析されます。 パス・コンポーネントが空でスキーム、機関、およびクエリーの各コンポーネントが未定義の場合、新しいURLが現在のドキュメントへの参照となります。 それ以外の場合は、仕様のフラグメント部分とクエリー部分が新しいURLに使われます。<scheme>://<authority><path>?<query>#<fragment>指定された仕様でスキーム・コンポーネントが定義され、そのスキーム・コンポーネントがコンテキストのスキームと一致しない場合、仕様だけに基づく絶対URLとして新しいURLが生成されます。 そうでない場合は、スキーム・コンポーネントはコンテキストURLを継承します。 機関コンポーネントが仕様にある場合には、仕様は絶対的なものとして扱われ、仕様の機関とパスはコンテキストの機関とパスを置換します。 仕様に機関コンポーネントがない場合、新しいURLの機関はコンテキストを継承します。 仕様のパス・コンポーネントがスラッシュ文字「/」で始まる場合、パスは絶対的なものとして扱われ、仕様のパスがコンテキストのパスを置換します。 それ以外の場合、RFC2396で説明されているように、パスは相対パスとして扱われ、コンテキスト・パスに追加されます。 また、この場合、「..」および「.」によって行われたディレクトリ変更を削除することで、パスは正規化されます。 URL構文解析の詳細な説明については、RFC2396を参照してください。 - パラメータ:
- context- 仕様を構文解析するコンテキスト。
- spec- URLとして構文解析される- String。
- 例外:
- MalformedURLException- プロトコルが指定されていないか、未知のプロトコルが見つかった場合、または- specが- nullの場合、または解析されたURLが関連プロトコルの特定の構文に準拠していない場合。
- 関連項目:
 
- 
URLpublic URL(URL context, String spec, URLStreamHandler handler) throws MalformedURLException 指定されたコンテキスト内の指定されたハンドラで、指定された仕様を構文解析してURLを生成します。 ハンドラがnullの場合、2つの引数を取るコンストラクタと同様の解析が行われます。- パラメータ:
- context- 仕様を構文解析するコンテキスト。
- spec- URLとして構文解析される- String。
- handler- URLのストリーム・ハンドラ。
- 例外:
- MalformedURLException- プロトコルが指定されていないか、未知のプロトコルが見つかった場合、または- specが- nullの場合、または解析されたURLが関連プロトコルの特定の構文に準拠していない場合。
- SecurityException−セキュリティ・マネージャが存在し、セキュリティ・マネージャの- checkPermissionメソッドがストリーム・ハンドラの指定を許可しない場合。
- 関連項目:
 
 
- 
- 
メソッドの詳細- 
getQuerypublic String getQuery()このURLのクエリー部分を取得します。- 戻り値:
- このURLのクエリー部分。存在しない場合はnull
- 導入されたバージョン:
- 1.3
 
- 
getPathpublic String getPath()このURLのパス部分を取得します。- 戻り値:
- このURLのパス部分。存在しない場合は空の文字列
- 導入されたバージョン:
- 1.3
 
- 
getUserInfopublic String getUserInfo()このURLのユーザー情報部分を取得します。- 戻り値:
- このURLのユーザー情報部分。存在しない場合はnull
- 導入されたバージョン:
- 1.3
 
- 
getAuthoritypublic String getAuthority()このURLの機関部分を取得します。- 戻り値:
- このURLの機関部分
- 導入されたバージョン:
- 1.3
 
- 
getPortpublic int getPort()このURLのポート番号を取得します。- 戻り値:
- ポート番号。ポートが設定されていない場合は -1
 
- 
getDefaultPortpublic int getDefaultPort()このURLに関連するプロトコルのデフォルトのポート番号を取得します。 URLスキームまたはURLのURLStreamHandlerがデフォルトのポート番号を定義しない場合は、-1が返されます。- 戻り値:
- ポート番号
- 導入されたバージョン:
- 1.4
 
- 
getProtocolpublic String getProtocol()このURLのプロトコル名を取得します。- 戻り値:
- このURLのプロトコル。
 
- 
getHostpublic String getHost()該当する場合、このURLのホスト名を取得します。 ホスト名の形式はRFC 2732に準拠します。つまり、リテラルIPv6アドレスの場合、このメソッドは角カッコ(「[」および「]」)で囲まれたIPv6アドレスを返します。- 戻り値:
- このURLのホスト名。
 
- 
getFilepublic String getFile()このURLのファイル名を取得します。 返されるファイル部分は、getQuery()の値が存在する場合には、その値とgetPath()の値を連結したものと同じになります。 クエリー部分が存在しない場合、このメソッドとgetPath()は同じ結果を返します。- 戻り値:
- このURLのファイル名。存在しない場合は空の文字列
 
- 
getRefpublic String getRef()このURLのアンカー(「参照」とも呼ばれる)を取得します。- 戻り値:
- このURLのアンカー(「参照」とも呼ばれる)。存在しない場合はnull
 
- 
equalspublic boolean equals(Object obj) このURLと別のオブジェクトとが等しいかどうかを比較します。指定されたオブジェクトがURLでない場合、このメソッドは直ちに falseを返します。2つのURLオブジェクトが等しいのは、同じプロトコルを持ち、同じホストを参照し、ホスト上のポート番号が同じで、ファイルとファイルのフラグメントが同じ場合です。 2つのホストが等価と見なされるのは、両方のホスト名が同じIPアドレスに解決されるか、どちらかのホスト名を解決できない場合は、大文字小文字に関係なくホスト名が等しいか、両方のホスト名がnullに等しい場合です。 ホスト比較には名前解決が必要なので、この操作はブロック操作です。 ノート: equalsの定義された動作は、HTTPの仮想ホストと一致しないことが知られています。
- 
hashCodepublic int hashCode()ハッシュ表のインデックス付けに適したint値を作成します。ハッシュ・コードはURL比較に関連するすべてのURLコンポーネントに基づいています。 したがって、この操作はブロック操作です。 
- 
sameFilepublic boolean sameFile(URL other) フラグメント・コンポーネント以外の2つのURLを比較します。フラグメント・コンポーネントを考慮しないで、この URLとother引数が等しい場合は、trueを返します。- パラメータ:
- other- 比較対象の- URL。
- 戻り値:
- 参照するリモート・オブジェクトが同じである場合はtrue、そうでない場合はfalse。
 
- 
toStringpublic String toString()このURLの文字列表現を構築します。 このオブジェクトのストリーム・プロトコル・ハンドラのtoExternalFormメソッドを呼び出すことによって文字列が作成されます。
- 
toExternalFormpublic String toExternalForm()このURLの文字列表現を構築します。 このオブジェクトのストリーム・プロトコル・ハンドラのtoExternalFormメソッドを呼び出すことによって文字列が作成されます。- 戻り値:
- このオブジェクトの文字列表現。
- 関連項目:
 
- 
toURIpublic URI toURI() throws URISyntaxExceptionこのURLと等価なURIを返します。 このメソッドは、new URI (this.toString())と同じように機能します。RFC 2396に準拠したURLインスタンスは必ずURIに変換できることに注意してください。 ただし、厳密に準拠していないURLは、URIに変換できない可能性があります。 - 戻り値:
- このURLと等価なURIインスタンス。
- 例外:
- URISyntaxException- このURLが厳密にRFC2396に従った形式ではなく、URIに変換できない場合。
- 導入されたバージョン:
- 1.5
 
- 
openConnectionpublic URLConnection openConnection() throws IOExceptionURLが参照するリモート・オブジェクトへの接続を表すURLConnectionインスタンスを返します。このURLのプロトコル・ハンドラのURLStreamHandler.openConnection(URL)メソッドを呼び出すたびに、URLConnectionの新しいインスタンスが作成されます。 URLConnectionインスタンスは作成時に実際のネットワーク接続を確立しないことに注意してください。 これが発生するのは、URLConnection.connect()の呼出し時のみです。 HTTPやJARといったURLのプロトコルごとに一般または特殊なURLConnectionサブクラスが存在しており、そのサブクラスは次のパッケージまたはそのサブパッケージのいずれかに属します。java.lang、java.io、java.util, java.net。返される接続の型は、そのサブクラスになります。 たとえば、HTTPの場合はHttpURLConnectionが返され、JARの場合はJarURLConnectionが返されます。 - 戻り値:
- URLにリンクしているURLConnection。
- 例外:
- IOException- 入出力例外が発生した場合。
- 関連項目:
 
- 
openConnectionpublic URLConnection openConnection(Proxy proxy) throws IOException openConnection()と同じですが、指定されたプロキシを介して接続が行われます。プロキシをサポートしないプロトコル・ハンドラは、プロキシ・パラメータを無視し、通常の接続を作成します。 このメソッドを呼び出すと、システムのデフォルトのProxySelector設定が優先されます。- パラメータ:
- proxy−この接続の確立に使用されるプロキシ。 直接接続を行いたい場合はProxy.NO_PROXYを指定すべきである。
- 戻り値:
- URLへのURLConnection。
- 例外:
- IOException- 入出力例外が発生した場合。
- SecurityException−セキュリティ・マネージャが存在し、プロキシに接続する権限を呼出し元が持っていない場合。
- IllegalArgumentException−プロキシがnullであるかプロキシの型が正しくない場合にスローされる
- UnsupportedOperationException−プロトコル・ハンドラを実装するサブクラスがこのメソッドをサポートしない場合。
- 導入されたバージョン:
- 1.5
- 関連項目:
 
- 
openStreampublic final InputStream openStream() throws IOExceptionこのURLへの接続を開き、その接続から読み込むためのInputStreamを返します。 このメソッドは次のメソッドの短縮形です。openConnection().getInputStream()- 戻り値:
- URL接続から入力を読み込むための入力ストリーム。
- 例外:
- IOException- 入出力例外が発生した場合。
- 関連項目:
 
- 
getContentpublic final Object getContent() throws IOExceptionこのURLのコンテンツを取得します。 このメソッドは次のメソッドの短縮形です。openConnection().getContent()- 戻り値:
- このURLのコンテンツ。
- 例外:
- IOException- 入出力例外が発生した場合。
- 関連項目:
 
- 
getContentpublic final Object getContent(Class<?>[] classes) throws IOException このURLのコンテンツを取得します。 このメソッドは次のメソッドの短縮形です。openConnection().getContent(classes)- パラメータ:
- classes−Java型の配列
- 戻り値:
- クラスの配列で指定された型が最初に一致した、このURLのコンテンツ・オブジェクト。要求された型がサポートされていない場合はnull。
- 例外:
- IOException- 入出力例外が発生した場合。
- 導入されたバージョン:
- 1.3
- 関連項目:
 
- 
setURLStreamHandlerFactorypublic static void setURLStreamHandlerFactory(URLStreamHandlerFactory fac) アプリケーションのURLStreamHandlerFactoryを設定します。 このメソッドは、使用するJava仮想マシンで1回しか呼び出せません。URLStreamHandlerFactoryインスタンスは、プロトコル名からストリーム・プロトコル・ハンドラを構築するのに使用されます。セキュリティ・マネージャが存在する場合、この操作が許可されるように、このメソッドは最初にセキュリティ・マネージャの checkSetFactoryメソッドを呼び出します。 この結果、SecurityExceptionがスローされることがあります。- パラメータ:
- fac- 目的のファクトリ。
- 例外:
- Error−アプリケーションでファクトリがすでに設定されている場合。
- SecurityException- セキュリティ・マネージャが存在し、その- checkSetFactoryメソッドでこの操作が許可されていない場合。
- 関連項目:
 
 
-