ディレクトリに取得して保存する必要があるオンライン ファイル (などhttp://www.example.com/information.asp
) があります。オンライン ファイル (URL) を 1 行ずつ取得して読み取る方法はいくつかあることは知っていますが、Java を使用してファイルをダウンロードして保存する方法はありますか?
ベストアンサー1
与えるJava の NIO試してみる:
URL website = new URL("http://www.website.com/information.asp");
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream("information.html");
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
を使用すると、ソース チャネルから読み取り、このチャネルに書き込む単純なループよりもはるかに効率的になる可能性transferFrom()
があります。多くのオペレーティング システムでは、バイトを実際にコピーすることなく、ソース チャネルからファイル システム キャッシュに直接転送できます。
詳しくはこちらここ。
注: transferFrom の 3 番目のパラメータは、転送する最大バイト数です。Integer.MAX_VALUE
最大 2^31 バイトを転送し、Long.MAX_VALUE
最大 2^63 バイト (存在するどのファイルよりも大きい) を許可します。