java.net.URLConnection

目的
HTTPで接続し、ファイルのダウンロードなどを行う。

関連クラス

今回のソース
import java.net.*;
import java.io.*;

class WWW
{
	public static void main(String args[])
	{
		byte b,bytes[];
		int index = 0;

		try
		{
			URL url = new URL("http://w33.mtci.ne.jp/~shige1/image/cube.gif");
			URLConnection urlcon = url.openConnection();
			urlcon.setDoInput(true);
			int length = urlcon.getContentLength();

			DataInputStream dis = new DataInputStream(urlcon.getInputStream());
			bytes = new byte[length];
			for(int i=0;i<length;i++)
			{
				bytes[i] = dis.readByte();
			}

			File file = new File(url.getFile());
			FileOutputStream file_out = new FileOutputStream(file.getName());
			file_out.write(bytes);
		}
		catch(Exception e)
		{
			System.out.println(e.toString());
		}
	}
}
Source is here. (ZIP Format,512Byte,Shift-JIS)

コンパイル&実行
javac WWW.java
java WWW

説明
(概略)

URLConnectionクラスを使用する手順は、3段階あります。
(1) URL.openConnection()で、接続を確立する。
(2) setDoInput()などのパラメータ設定メソッドを使用し、各種設定を行う。
(3) データの受け渡しを行う。
この通りやれば、HTTPサーバーと接続して、通信を行うことが出来ます。

(サンプルプログラムの説明)

URL url = new URL("http://w33.mtci.ne.jp/~shige1/image/cube.gif");
単純に、URLクラスのインスタンスを生成しているだけです。
今回は直にGIFファイルを指定していますが、コマンドライン引数の
argsを使って受け取った方が、より柔軟なプログラムと言えるでしょう。
URLConnection urlcon = url.openConnection();
URLConnectionクラスを使うのに、まずは接続を確立します。
URL.openConnectionメソッドの返り値として、URLConnectionのインスタンスが返されます。
urlcon.setDoInput(true);
このメソッドは、URLConnectionクラスで、入力を有効にするメソッドです。
特に設定しなくても、デフォルトはtrueなのですが、
出力を有効にする、setDoOutput(true)の呼び出しを行った場合は、
setDoInputの呼び出しが必要です。
bytes = new byte[length];
今回は、扱うファイルがバイナリ(GIFファイル)なので、
byte型の配列を扱っています。
テキストを扱うなら、Stringでしょうね。
File file = new File(url.getFile());
FileOutputStream file_out = new FileOutputStream(file.getName());
この部分は、冗長なように思うかもしれませんが、
実は、URL.getFile()が返すファイル名は、/apache_pb.gifのように、
ルートディレクトリを含んだものになっています。
しかし、このファイル名でFileOutputStreamを構築すると、正しく書き出されません。
なので、一度Fileクラスに変換して、それからFileOutputStreamを構築しています。