Как загрузить часть файла с помощью Java? - PullRequest
0 голосов
/ 08 ноября 2010

Я использую этот код 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");

Я хотел бы знать, есть ли способ загрузить только часть файла. Например, для файла размером 5 МБ необходимо загрузить последние 2 МБ.

Ответы [ 2 ]

4 голосов
/ 08 ноября 2010

Если сервер поддерживает это (и серверы HTTP 1.1 должны ), вы можете использовать запросы диапазона:

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

Кроме того, чтение одного символа за раз чрезвычайно неэффективно - вы должны читать в блоках, скажем, 4, 16 или 32 КБ.

2 голосов
/ 08 ноября 2010

Пожалуйста, посмотрите на Java: резюме Скачать в URLConnection

...