URLクラスでローカルファイルもシームレスに扱うJavaTips 〜Javaプログラミング編

» 2007年02月20日 10時00分 公開
[平野正喜@IT]

 Web上の「リソース」を指すポインタであるURL(Uniform Resource Locator)を表すには、java.net.URLクラスを用います。一般的な書式は、下記のとおりです。

「使用するプロトコル」+「ホストの名前」+「情報の名前」


例えば、「http://www.ncsa.uiuc.edu/demoweb/url-primer.html」であれば、

  • 使用するプロトコルは「http」
  • ホストの名前は「www.ncsa.uiuc.edu」
  • 情報の名前は「demoweb/url-primer.html」

 この「使用するプロトコル」に「file」を指定すると、ローカルファイルを指すURLになります。ローカルマシンでWebサーバが動作している必要はありません。

 また、相対パスと絶対パスのどちらでも指定できます。一般的な書式は、下記のとおりです。

「使用するプロトコル(file:)」+「絶対パスまたは相対パス」


  • 絶対パス指定の例:file:c:/Documents and Settings/Administrator/readme.txt
  • 相対パス指定の例:file:./Administrator/readme.txt

 Windowsの場合、パスの切れ目は「\」ですが、そのまま指定するとエスケープシーケンスとして扱われますので、「\\」とするか「/」に置換する必要があります。

ネットワークファイルとローカルファイルをシームレスに扱う

 以上から、URLを用いることで、プログラムからネットワークファイルとローカルファイルをシームレスに扱えます。

 一例として、URLオブジェクトの配列にネットワークファイルと、相対パス指定によるローカルファイル、絶対パス指定によるローカルファイルのURLを格納して、次々と読み込むプログラムは以下のようになります。

図1 ネットワークファイルとローカルファイルを順に読んで出力するプログラム 図1 ネットワークファイルとローカルファイルを順に読んで出力するプログラム

 なお、使用するプロトコルがhttpなどの場合は、ナンバー記号#」の後にフラグメントrefまたは参照とも呼ぶ)を指定できますが、fileの場合には無視されます。フラグメントを指定することにより、フラグメントを解釈できるアプリケーションに、指定のリソースを取得して、該当する部分を処理の対象とするように示します。

 ただし、上の図1のサンプルプログラムでは、フラグメントを指定しても、先頭行から読み込まれます。

Profile

RunDog.org

平野正喜


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。