JavaでURLからファイルをダウンロードする
Javaプログラムがファイルをダウンロードする方法。
URL url = new URL("http://example.com/file.zip"); // ダウンロードする URL URLConnection conn = url.openConnection(); InputStream in = conn.getInputStream(); File file = new File("c:\\download\\file.zip"); // 保存先 FileOutputStream out = new FileOutputStream(file, false); int b; while((b = in.read()) != -1){ out.write(b); } out.close(); in.close();
今回はアプレットで動作確認したけど、サーブレットでもなんででも使えると思う。ただサーブレットとかだったらJakarta Commons HttpClientを使った方が簡単のはず。何でも自分で実装しなきゃいけない状況って、たぶんアプレットに多いんじゃないかと。
速くした
ダウンロード速度が遅かったので、速くした。
URL url = new URL("http://example.com/file.zip"); // ダウンロードする URL URLConnection conn = url.openConnection(); InputStream in = conn.getInputStream(); File file = new File("c:\\download\\file.zip"); // 保存先 FileOutputStream out = new FileOutputStream(file, false); byte[] bytes = new byte[512]; while(true){ int ret = in.read(bytes); if(ret == 0) break; out.write(bytes, 0, ret); } out.close(); in.close();
512バイトずつダウンロードするようにした。真ん中のwhile文のあたりを修正しただけ。
bytes変数の宣言もwhileブロックの中に入れた方が美しいかな。使い回した方が速そうだけど。どうなんだろ。試してない。