URI クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
Uniform Resource Identifier (URI) 参照を表します。
[Android.Runtime.Register("java/net/URI", DoNotGenerateAcw=true)]
public sealed class URI : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Lang.IComparable
[<Android.Runtime.Register("java/net/URI", DoNotGenerateAcw=true)>]
type URI = class
inherit Object
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IComparable
- 継承
- 属性
- 実装
注釈
URI (Uniform Resource Identifier) 参照を表します。
このクラスのインスタンスは、以下に示すいくつかの小さな偏差とは別に、RFC  で定義されている URI 参照を表します。2396: Uniform Resource Identifiers (URI): RFC  によって修正されたジェネリック構文http://www.ietf.org/rfc/rfc2396.txt。2732: URL 内のリテラル IPv6 アドレスの形式。http://www.ietf.org/rfc/rfc2732.txt リテラル IPv6 アドレス形式では、scope_idsもサポートされます。 ここでは、scope_idsの構文と使用法について説明します。 このクラスは、コンポーネントから URI インスタンスを作成したり、文字列形式を解析したり、インスタンスのさまざまなコンポーネントにアクセスするためのメソッド、および URI インスタンスを正規化、解決、および相対化するためのメソッドを作成するためのコンストラクターを提供します。 このクラスのインスタンスは不変です。
<h3> URI 構文とコンポーネント </h3>
最上位レベルでは、文字列形式の URI 参照 (以下、単に "URI") には構文があります
<blockquote> [scheme<b><:
/b>]scheme-specific-part[<b>#
</b>fragment] </blockquote>
角かっこ [...] は省略可能なコンポーネントを示し、文字 <b:
<>/b> と <b/b>#
<> はそれ自体を表します。
絶対 URI はスキームを指定します。絶対ではない URI は相対と言われます。 URI は、 不透明 か 階層かに応じて分類されます。
不透明 URI は、スキーム固有の部分がスラッシュ文字 ('/'
) で始まらない絶対 URI です。 不透明な URI は、それ以上の解析の対象になりません。 不透明 URI の例を次に示します。
<blockquote><table cellpadding=0 cellspacing=0 summary="layout"><tr><td td>mailto:java-net@java.sun.com
<></tr td>><<td><news:comp.lang.java
></tr tr><<>td<urn:isbn:096139210x
>/td></tr></table></blockquote>
階層 URI は、スキーム固有の部分がスラッシュ文字で始まる絶対 URI、または相対 URI (スキームを指定しない URI) のいずれかです。 階層 URI の例を次に示します。
<blockquote>http://java.sun.com/j2se/1.3/
<br>docs/guide/collections/designfaq.html#28
<br br><>../../../demo/jfc/SwingSet2/src/SwingSet2.java
<file:///~/calendar
/blockquote>
階層 URI は、構文に従ってさらに解析されます
<blockquote> [scheme<b><:
/b>][<b><//
/b>authority][path][<b><?
/b>query][<b>#
</b>fragment] </blockquote>
ここで、文字 <b><:
/b>、<b</
>/b>、<b?
<>/b>、b>#
<</b> はそれ自体を表します。 階層 URI のスキーム固有の部分は、スキームとフラグメント コンポーネントの間の文字で構成されます。
階層 URI の機関コンポーネントは、指定されている場合は サーバーベース または レジストリベースです。 サーバーベースの権限は、使い慣れた構文に従って解析されます
<blockquote> [user-info<b><@
/b>]host[<b>:
</b>port] </blockquote>
ここで、文字 <b<>@
/b> と <b:
></b は>それ自体を表します。 現在使用されているほぼすべての URI スキームは、サーバー ベースです。 この方法で解析されない権限コンポーネントは、レジストリ ベースと見なされます。
階層 URI のパス コンポーネントは、スラッシュ文字 ('/'
) で始まる場合は絶対と言われます。それ以外の場合は相対です。 絶対または権限を指定する階層 URI のパスは、常に絶対パスです。
その後、URI インスタンスには次の 9 つのコンポーネントが含まれています。
<blockquote><table summary="URI:scheme,scheme-specific-part,authority,user-info,host,port,path,query,fragment"><tr><th>Component</th>< type<>/th></tr<>td><td>scheme</td td><String
/td></tr>><><td>< scheme-specific-part </td><td>String
</td></tr tr><><td>authority</td td>String
><</td></tr tr td>><><user-info</td td><><String
/td></tr td><>><host</td><td<String
>/td></tr td><>><port</td><td><int
/td></tr<>><td td>path</td><tdString
></td/td></tr tr><tr><td>query</td td>><<String
/td></tr tr><<>td>fragment</td><td><String
/td></tr></table></blockquote>
特定のインスタンスでは、特定のコンポーネントが 未定義 であるか、個別の値で 定義 されています。 未定義の文字列コンポーネントは で null
表され、未定義の整数コンポーネントは で -1
表されます。 文字列コンポーネントは、その値として空の文字列を持つように定義できます。これは、未定義のコンポーネントと同じではありません。
インスタンスで特定のコンポーネントが定義されているかどうかは、表される URI の種類によって異なります。 絶対 URI にはスキーム コンポーネントがあります。 不透明な URI にはスキーム、スキーム固有の部分、場合によってはフラグメントがありますが、他のコンポーネントはありません。 階層 URI には常にパスがあり (空の場合もあります)、スキーム固有の部分 (少なくともパスを含む) があり、他のコンポーネントのいずれかを持つことができます。 権限コンポーネントが存在し、サーバーベースである場合は、ホスト・コンポーネントが定義され、ユーザー情報およびポート・コンポーネントが定義される場合があります。
<h4> URI インスタンスに対する <操作 /h4>
このクラスでサポートされる主な操作は、 正規化、 解決、 相対化の操作です。
正規化 は、階層 URI のパス コンポーネントから不要 "."
なセグメントと ".."
セグメントを削除するプロセスです。 各 "."
セグメントは単に削除されます。 ".."
セグメントが削除されるのは、セグメントの前に非".."
セグメントがある場合のみです。 正規化は、不透明な URI には影響しません。
解決 とは、ある URI を別の ベース URI に対して解決するプロセスです。 結果として得られる URI は、RFC  で指定された方法で両方の URI のコンポーネントから構築されます。2396。元ので指定されていないものに対してベース URI からコンポーネントを取得します。 階層 URI の場合、元のパスはベースのパスに対して解決され、正規化されます。 結果 (例: 解決)
<blockquote>docs/guide/collections/designfaq.html#28
(1) </blockquote>
ベース URI http://java.sun.com/j2se/1.3/
に対する結果 URI
<blockquote>http://java.sun.com/j2se/1.3/docs/guide/collections/designfaq.html#28
</blockquote>
相対 URI の解決
<blockquote>../../../demo/jfc/SwingSet2/src/SwingSet2.java
(2) </blockquote>
この結果に対して、次に、
<blockquote>http://java.sun.com/j2se/1.3/demo/jfc/SwingSet2/src/SwingSet2.java
</blockquote>
絶対 URI と相対 URI の両方、および階層 URI の場合は絶対パスと相対パスの両方の解決がサポートされます。 他の URI に対して URI を file:///~calendar
解決すると、元の URI が絶対であるため、単に生成されます。 上記の相対 URI (2) を相対ベース URI (1) に対して解決すると、正規化された相対 URI が生成されます。
<blockquote>demo/jfc/SwingSet2/src/SwingSet2.java
</blockquote>
相対化は、最後に、解像度の逆です。正規化された 2 つの URI u と  の場合。v、
<blockquote>u.relativize(
u.resolve(
v v)).equals(
)
と<br>u.resolve(
u.relativize(
v)).equals(
v)
.<br></blockquote>
多くの場合、この操作は、可能な限りドキュメントのベース URI に対して相対的に行う必要がある URI を含むドキュメントを作成する場合に便利です。 たとえば、URI の相対化
<blockquote>http://java.sun.com/j2se/1.3/docs/guide/index.html
</blockquote>
ベース URI に対して
<blockquote>http://java.sun.com/j2se/1.3
</blockquote>
は相対 URI を生成します docs/guide/index.html
。
<h4> 文字カテゴリ </h4>
RFC 2396 では、URI 参照のさまざまなコンポーネントで許可される文字を正確に指定します。 これらの制約を説明するために、次のカテゴリ (そのほとんどがその仕様から取得) を使用します。
<blockquote><table cellspacing=2 summary="カテゴリ alpha,digit,alphanum,unreserved,punct,reserved,escaped,and other"><tr><th valign=top>alpha</th><td>US-ASCII アルファベット文字, 'A'
  を介して;'Z'
nbsp&'a'
;  を介して;'z'
</td></tr tr><><th valign=top>digit</th><td>US-ASCII decimal digit characters, '0'
  を介して;'9'
</td></tr tr><<>th valign=top>alphanum</th><td>すべてのアルファ文字と数字文字</td></tr><th><valign=top>予約されていない </th><td>すべての英数字と文字列 "_-!.~'()*"
</td></tr tr><><th valign=top> punct</th><td>文字列",;:$&+="
<内の文字 /td></tr tr><<>th valign=top> reserved</th<>td>すべての区切り文字と文字列 "?/[]@"
</td></tr tr<>><th valign=top>の文字escaped</th><td>エスケープされたオクテット、つまり、パーセント文字 ('%'
) の後に 2 つの 16 進数 ('9'
'0'
-、、'A'
'F'
-)'a'
<-'f'
/td></tr tr>><<th valign=top> other</th<>td>で構成されるトリプレット US-ASCII 文字セットにない Unicode 文字は制御文字ではありません (に従います)。java.lang.Character#isISOControl(char) Character.isISOControl
メソッド)、および は(メソッドにjava.lang.Character#isSpaceChar(char) Character.isSpaceChar
従って)nbsp;  &スペース文字ではありません。(<b>RFC 2396</b> からの逸脱。これは US-ASCII に制限されています)</td></tr></table></blockquote>
"legal-chars"> すべての有効 URI 文字のセットは、 予約されていない、 予約済み、 エスケープされた、 およびその他 の文字で構成されます。
<h4> エスケープされたオクテット、引用符、エンコード、デコード </h4>
RFC 2396 では、エスケープされたオクテットをユーザー情報、パス、クエリ、フラグメント の各コンポーネントに表示できます。 エスケープは URI で次の 2 つの目的を果たします。
<ul>
<李>
URI が RFC  に厳密に準拠する必要がある場合に、US-ASCII 以外の文字を エンコード する場合。 他 の文字を含まない 2396。
</李>
<李>
コンポーネント内で無効な文字を 引用符で囲 む。 ユーザー情報、パス、クエリ、フラグメントの各コンポーネントは、どの文字が有効で違法と見なされるのか、若干異なります。
</李>
</ul>
これらの目的は、次の 3 つの関連する操作によってこのクラスで提供されます。
<ul>
<李>
"エンコード"> 文字は、UTF-8 文字セット内のその文字を表すエスケープされたオクテットのシーケンスに置き換えることによって エンコード されます。 たとえば、ユーロ通貨記号 ('\u005Cu20AC'
) は として "%E2%82%AC"
エンコードされます。 (<b>RFC  からの逸脱;特定の文字セットを指定しない 2396</b>)。
</李>
<李>
"quote"> 無効な文字は、エンコードするだけで 引用符で囲 まれます。 たとえば、スペース文字は、 に置き換えることによって引用符で "%20"
囲まれます。 UTF-8 には US-ASCII が含まれているので、US-ASCII 文字の場合、この変換は RFC 2396 で必要な効果を正確に持ちます。
</李>
<李>
"decode"> エスケープされたオクテットのシーケンスは、UTF-8 文字セットで表される文字シーケンスに置き換えることによって デコードされます 。 UTF-8 には US-ASCII が含まれているので、デコードでは、引用符で囲まれた US-ASCII 文字と、エンコードされた非 US-ASCII 文字をデコードする効果があります。 エスケープされたオクテットのデコード時にデコード エラーが発生した場合、誤ったオクテットは Unicode 置換文字 である に '\u005CuFFFD'
置き換えられます。
</李>
</ul>
これらの操作は、このクラスのコンストラクターとメソッドで次のように公開されます。
<ul>
<李>
#URI(java.lang.String) 単一引数コンストラクターでは、引数に無効な文字を引用符で囲む必要があり、エスケープされたオクテットとその 他 の文字が保持されます。
</李>
<李>
#URI(java.lang.String,java.lang.String,java.lang.String,int,java.lang.String,java.lang.String,java.lang.String) の複数引数コンストラクターは、表示されるコンポーネントで必要に応じて無効な文字を引用符で囲みます。 パーセント文字 ('%'
) は、常にこれらのコンストラクターによって引用符で囲まれます。 その他の文字はすべて保持されます。
</李>
<李>
、、、#getRawAuthority() getRawAuthority
、および #getRawSchemeSpecificPart() getRawSchemeSpecificPart
の各メソッドは#getRawUserInfo() getRawUserInfo
、エスケープされたオクテットを解釈せずに、対応するコンポーネントの値を未加工の形式で返します。 #getRawFragment() getRawFragment
#getRawQuery() getRawQuery
#getRawPath() getRawPath
これらのメソッドによって返される文字列には、エスケープされたオクテットと 他 の文字の両方が含まれる場合があり、無効な文字は含まれません。
</李>
<李>
、、、#getAuthority() getAuthority
、および #getSchemeSpecificPart() getSchemeSpecificPart
の各メソッドは#getUserInfo() getUserInfo
、対応するコンポーネント内のエスケープされたオクテットをデコードします。 #getFragment() getFragment
#getQuery() getQuery
#getPath() getPath
これらのメソッドによって返される文字列には、 他 の文字と無効な文字の両方が含まれている可能性があり、エスケープされたオクテットは含まれません。
</李>
<李>
メソッドは #toString() toString
、必要なすべての引用符を含む URI 文字列を返しますが、 他 の文字を含むことができます。
</李>
<李>
メソッドは #toASCIIString() toASCIIString
、 他 の文字を含まない完全に引用符で囲まれたエンコードされた URI 文字列を返します。
</李>
</ul>
<h4> ID </h4>
URI u の場合は、常に
<blockquote>new URI(
u.toString()).equals(
u)
. </blockquote>
空の機関 (file:///tmp/
) の前に 2 つのスラッシュ、ホスト名の後にコロン ( のようにhttp://java.sun.com:
) ポートがない、引用符で囲む必要がある文字以外の文字をエンコードしない URI u の場合、次の ID も保持されます。
new URI(<i>u</i>.getScheme(),
<i>u</i>.getSchemeSpecificPart(),
<i>u</i>.getFragment())
.equals(<i>u</i>)
いずれの場合も、
new URI(<i>u</i>.getScheme(),
<i>u</i>.getUserInfo(), <i>u</i>.getAuthority(),
<i>u</i>.getPath(), <i>u</i>.getQuery(),
<i>u</i>.getFragment())
.equals(<i>u</i>)
u が階層構造の場合、および
new URI(<i>u</i>.getScheme(),
<i>u</i>.getUserInfo(), <i>u</i>.getHost(), <i>u</i>.getPort(),
<i>u</i>.getPath(), <i>u</i>.getQuery(),
<i>u</i>.getFragment())
.equals(<i>u</i>)
u が階層構造で、権限またはサーバーベースの権限を持たない場合は 。
<h4> URI、URL、および URL </h4>
URI は一様なリソース 識別子 であり、URL は均一なリソース ロケーターです。 したがって、すべての URL は URI であり、抽象的に言えば、すべての URI が URL であるわけではありません。 これは、URI の別のサブカテゴリである UNIFORM Resource Name (URN) があり、リソースに名前を付けますが、それらを見つける方法を指定していないためです。 上に mailto
示した 、 news
、および isbn
URI は、URL の例です。
URI と URL の概念上の違いは、このクラスと URL
クラスの違いに反映されます。
このクラスのインスタンスは、RFC 2396 によって定義される構文上の意味での URI 参照を表します。 URI は、絶対または相対のいずれかになります。 URI 文字列は、指定するスキーム (存在する場合) に関係なく、ジェネリック構文に従って解析されます。 ホストの検索 (存在する場合) は実行されません。また、スキームに依存するストリーム ハンドラーは構築されません。 等値、ハッシュ、および比較は、インスタンスの文字コンテンツの観点から厳密に定義されます。 言い換えると、URI インスタンスは、構文、スキームに依存しない比較、正規化、解決、相対化の操作をサポートする構造化文字列に過しません。
これに対し URL
、 クラスのインスタンスは、URL の構文コンポーネントと、記述されているリソースへのアクセスに必要な情報の一部を表します。 URL は絶対である必要があります。つまり、常にスキームを指定する必要があります。 URL 文字列は、そのスキームに従って解析されます。 ストリーム ハンドラーは URL に対して常に確立され、実際にはハンドラーが使用できないスキームの URL インスタンスを作成することはできません。 等値とハッシュは、ホストのスキームとインターネット アドレス (存在する場合) の両方によって異なります。比較が定義されていません。 つまり、URL は、解決の構文操作と、ホストを検索し、指定されたリソースへの接続を開くネットワーク I/O 操作をサポートする構造化文字列です。
1.4 で追加されました。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。
コンストラクター
URI(String) |
指定された文字列を解析して URI を構築します。 |
URI(String, String, String) |
指定されたコンポーネントから URI を構築します。 |
URI(String, String, String, Int32, String, String, String) |
指定されたコンポーネントから階層 URI を構築します。 |
URI(String, String, String, String) |
指定されたコンポーネントから階層 URI を構築します。 |
URI(String, String, String, String, String) |
指定されたコンポーネントから階層 URI を構築します。 |
プロパティ
Authority |
この URI のデコードされた機関コンポーネントを返します。 |
Class |
この |
Fragment |
この URI のデコードされたフラグメント コンポーネントを返します。 |
Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
Host |
この URI のホスト コンポーネントを返します。 |
IsAbsolute |
この URI が絶対かどうかを示します。 |
IsOpaque |
この URI が不透明かどうかを示します。 |
JniIdentityHashCode |
Uniform Resource Identifier (URI) 参照を表します。 (継承元 Object) |
JniPeerMembers |
Uniform Resource Identifier (URI) 参照を表します。 |
Path |
この URI のデコードされたパス コンポーネントを返します。 |
PeerReference |
Uniform Resource Identifier (URI) 参照を表します。 (継承元 Object) |
Port |
この URI のポート番号を返します。 |
Query |
この URI のデコードされたクエリ コンポーネントを返します。 |
RawAuthority |
この URI の未加工の機関コンポーネントを返します。 |
RawFragment |
この URI の生フラグメント コンポーネントを返します。 |
RawPath |
この URI の生パス コンポーネントを返します。 |
RawQuery |
この URI の生クエリ コンポーネントを返します。 |
RawSchemeSpecificPart |
この URI の未加工のスキーム固有の部分を返します。 |
RawUserInfo |
この URI の生のユーザー情報コンポーネントを返します。 |
Scheme |
この URI のスキーム コンポーネントを返します。 |
SchemeSpecificPart |
この URI のデコードされたスキーム固有の部分を返します。 |
ThresholdClass |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。 (継承元 Object) |
ThresholdType |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。 (継承元 Object) |
UserInfo |
この URI のデコードされたユーザー情報コンポーネントを返します。 |
メソッド
Clone() |
このオブジェクトのコピーを作成して返します。 (継承元 Object) |
CompareTo(URI) |
この URI を別のオブジェクト (URI である必要があります) と比較します。 |
Create(String) |
指定された文字列を解析して URI を作成します。 |
Dispose() |
Uniform Resource Identifier (URI) 参照を表します。 (継承元 Object) |
Dispose(Boolean) |
Uniform Resource Identifier (URI) 参照を表します。 (継承元 Object) |
Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
JavaFinalize() |
ガベージ コレクションがオブジェクトへの参照がなくなったと判断したときに、オブジェクトのガベージ コレクターによって呼び出されます。 (継承元 Object) |
Normalize() |
この URI のパスを正規化します。 |
Notify() |
このオブジェクトのモニターで待機している 1 つのスレッドをウェイクアップします。 (継承元 Object) |
NotifyAll() |
このオブジェクトのモニターで待機しているすべてのスレッドをウェイクアップします。 (継承元 Object) |
ParseServerAuthority() |
この URI の機関コンポーネント (定義されている場合) を、ユーザー情報、ホスト、ポートのコンポーネントに解析しようとします。 |
Relativize(URI) |
指定された URI をこの URI に対して相対化します。 |
Resolve(String) |
指定された文字列を解析し、この URI に対して解決することで、新しい URI を構築します。 |
Resolve(URI) |
指定された URI をこの URI に対して解決します。 |
SetHandle(IntPtr, JniHandleOwnership) |
Handle プロパティを設定します。 (継承元 Object) |
ToArray<T>() |
Uniform Resource Identifier (URI) 参照を表します。 (継承元 Object) |
ToASCIIString() |
この URI の内容を US-ASCII 文字列として返します。 |
ToString() |
オブジェクトの文字列形式を返します。 (継承元 Object) |
ToURL() |
この URI から URL を構築します。 |
UnregisterFromRuntime() |
Uniform Resource Identifier (URI) 参照を表します。 (継承元 Object) |
Wait() |
現在のスレッドが起動するまで待機します。通常<>は、通知</em> または <em>割り込み</em によって待機します>。 (継承元 Object) |
Wait(Int64) |
現在のスレッドが起動するまで待機します。通常<>は、通知</em> または>< em 割り込み</em>、または一定のリアルタイムが経過するまで待機します。 (継承元 Object) |
Wait(Int64, Int32) |
現在のスレッドが起動するまで待機します。通常<>は、通知</em> または>< em 割り込み</em>、または一定のリアルタイムが経過するまで待機します。 (継承元 Object) |
明示的なインターフェイスの実装
IComparable.CompareTo(Object) |
Uniform Resource Identifier (URI) 参照を表します。 |
IJavaPeerable.Disposed() |
Uniform Resource Identifier (URI) 参照を表します。 (継承元 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Uniform Resource Identifier (URI) 参照を表します。 (継承元 Object) |
IJavaPeerable.Finalized() |
Uniform Resource Identifier (URI) 参照を表します。 (継承元 Object) |
IJavaPeerable.JniManagedPeerState |
Uniform Resource Identifier (URI) 参照を表します。 (継承元 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Uniform Resource Identifier (URI) 参照を表します。 (継承元 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Uniform Resource Identifier (URI) 参照を表します。 (継承元 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Uniform Resource Identifier (URI) 参照を表します。 (継承元 Object) |
拡張メソッド
JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
JavaCast<TResult>(IJavaObject) |
Uniform Resource Identifier (URI) 参照を表します。 |
GetJniTypeName(IJavaPeerable) |
Uniform Resource Identifier (URI) 参照を表します。 |