• ベストアンサー

一括ダウンロードの方法

指定したURLの上のファイルをディレクトリごとダウンロードしたいんですが、どうすればいいんでしょうか? 全くの初心者の私の質問に答えるのは難しいと思いますので、 java製のソースを公開しているダウンローダもしくはダウンロードに関する講座サイトを教えていただくだけでもできればお願いしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • osumitan
  • ベストアンサー率33% (102/307)
回答No.2

クライアントマシンのみで実現するのは無理ですよね。 だってサーバが送ってくれないとダメなんですから(笑) 「クライアントマシンのみで」というのは、 サーバ側は通常のHTTPサーバという意味だとするなら、 クライアントから飛ばすリクエストには1ファイルしか載りませんし サーバからのレスポンスも1ファイルしか返りませんよね。 なので、まずクライアントが、サーバ側のディレクトリの中に 存在するファイルの一覧を何らかの形で取得して、 それを1つずつ順にリクエストをかけていくしかないでしょう。 ファイルの一覧を取るにしても、DOSのDIRみたいなコマンドはないので サーバ側にファイルの一覧を記述したファイルを置いておいて それをクライアントアプリが読み込むしかないと思います。 その場合、サーバに届くのはHTTPのリクエストなので、 クライアントがJavaなのかどうかということは無関係ですね。 もしサーブレットが使えるなら、J2SEのjava.uti.zipパッケージの中に zipファイルを作るためのクラスがありますから、それを使って 特定のディレクトリの中のファイルをzipファイルにまとめて それをダウンロードさせるという方法があります。

m035
質問者

お礼

さすがに無責任だったので、 もう1冊本を買って勉強しようと思います。 回答ありがとうございました。

m035
質問者

補足

>特定のディレクトリの中のファイルをzipファイルにまとめて >それをダウンロードさせるという方法があります。 どのようにすれば複数のネット上のファイルをまとめられるんでしょうか? なにぶん初心者なので、使い方が分からないんです。 サンプルみたいなものありませんか? もちろんクライアント側のもので。

その他の回答 (1)

noname#49664
noname#49664
回答No.1

これはJSP/サーブレットを使って、ということでしょうか? バイナリファイルのダウンロードは、基本的にresponse.getOutputStreamでServletOutputStreamインスタンスを取得し、このストリームを介してバイナリデータを送信します。ディレクトリごと送信するメソッドというのはないので、ディレクトリ内にあるファイルを一覧で取得し、1つずつ送信するしかないでしょう。  このあたりの機能の基本的な使い方はわかりますか? わからないと、これ以上は説明しようがないのですが・・。 とりあえず、@ITにバイナリファイルの入出力の記事がありますので、そちらを見てください。だいたいの流れがわかります。 http://www.atmarkit.co.jp/fjava/javatips/023jspservlet014.html

m035
質問者

お礼

具体的な方法を教えていただきありがとうございました。

m035
質問者

補足

>これはJSP/サーブレットを使って、ということでしょうか? 出来れば、クライアントマシンのみで実現したいんです。 やはりサーブレット無しでは無理でしょうか?

関連するQ&A