トップ 履歴 一覧 カテゴリ ソース 検索 ヘルプ RSS ログイン

ScrapCode/Java/URLConnection

INDEX

URL接続

URL クラスの openConnection で作られる URLConnection を使って接続する。

JAR (Java ARchive) ファイル

ClassLoader でJAR内のリソースなどのURLを取得すると以下の様なURLになる。

jar:file:/path/lib/hoge.jar!/package/Hoge.class

URLは、エントリやディレクトリ、JARファイルのみと指定できる。

URL url = new URL("jar:file:/path/lib/hoge.jar!/package/Hoge.class");
JarURLConnection conn = (JarURLConnection) url.openConnection();
JarFile file = conn.getJarFile();
JarEntry entry = conn.getJarEntry();
Manifest manifest = conn.getManifest();
Attributes attr = conn.getAttributes();

URLConnection は、JarURLConnection となり、JAR ファイルからの読み取り時にしか使用できません。

HTTP(HTTPS) でWEB接続

URL url = new URL("http://www.example.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.connect();
OutputStream os = conn.getOutputStream(); // Request post data
os.write(〜);
os.flush();
os.close();
InputStream is  = conn.getInputStream();  // Response data
is.read();
is.close();

URLConnection は、http の場合が HttpURLConnection、https の場合が HttpsURLConnection となる。

FTP でファイル転送

下の方法でいけるみたいだけど、どうなんだろう

URL url = new URL("ftp://user:pass@ftp.example.com/README.txt;type=i");
URLConnection conn = url.openConnection();
InputStream is  = conn.getInputStream();  // To download
is.read();
is.close();
OutputStream os = conn.getOutputStream(); // To upload
os.write(〜);
os.flush();
os.close();

Input/OutputStream は同時に開けない(排他関係になる)。ダウンロードでサーバにファイルがないと getInputStream() で例外(java.io.FileNotFoundException)になる。アップロードでサーバに既にファイルがある場合は上書きとなる(例外にはならない)。

ログイン時のカレントディレクトリより下位のファイルしか扱えない("/../../tmp/README.txt" と言ったような指定はできない。"/work/README.txt" はOK)。

最終更新時間:2009年10月24日 02時07分49秒 指摘や意見などあればSandBoxのBBSへ。