1. ホーム
  2. java

[解決済み] Javaを使ってインターネットからファイルをダウンロードし、保存するにはどうすればよいのでしょうか?

2022-03-20 08:06:45

質問

オンラインファイル(例えば http://www.example.com/information.asp ) を取得し、ディレクトリに保存する必要があります。オンラインファイル(URL)を一行ずつ取得して読む方法はいくつかあると思いますが、Javaを使ってファイルをダウンロードして保存するだけの方法はないでしょうか?

どのように解決するのですか?

与える 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 バイト (存在するどのファイルよりも大きい) を許容します。