0

この Java コードを使用して、インターネットからファイルをダウンロードしています。

String address = "http://melody.syr.edu/pzhang/publications/AMCIS99_vonDran_Zhang.pdf";
URL url = new URL(address);
System.out.println("Opening connection to " + address + "...");
URLConnection urlC = url.openConnection();
urlC.setRequestProperty("User-Agent", "");
urlC.connect();
InputStream is = urlC.getInputStream();
FileOutputStream fos = null;
fos = new FileOutputStream("myFileName");
int oneChar, count = 0;
while ((oneChar = is.read()) != -1) {
    System.out.print((char)oneChar);
    fos.write(oneChar);
    count++;
}
is.close();
fos.close();
System.out.println(count + " byte(s) copied");

ファイルの一部だけをダウンロードする方法があれば教えてください。たとえば、5MB のファイルの場合、最後の 2MB をダウンロードします。

4

2 に答える 2

5

サーバーがサポートしている場合 (および HTTP 1.1 サーバーがサポートしている場合)、範囲リクエストを使用できます。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35

また、一度に 1 文字ずつ読み取るのは非常に非効率的です。4、16、または 32 KB などのブロック単位で読み取る必要があります。

于 2010-11-08T19:17:13.430 に答える
3

Javaをご覧ください: URLConnection でダウンロードを再開します

于 2010-11-08T19:15:21.733 に答える