!!!URL接続 {{category ScrapCode,Java,nolink}}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|http://java.sun.com/javase/ja/6/docs/ja/api/java/net/JarURLConnection.html] となり、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|http://java.sun.com/javase/ja/6/docs/ja/api/java/net/HttpURLConnection.html]、https の場合が [HttpsURLConnection|http://java.sun.com/javase/ja/6/docs/ja/api/javax/net/ssl/HttpsURLConnection.html] となる。 !!!FTP でファイル転送 *Java FTP client libraries reviewed **http://www.javaworld.com/javaworld/jw-04-2003/jw-0404-ftp.html 下の方法でいけるみたいだけど、どうなんだろう 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)。