あなたが質問しているのはhttpヘッダーだと思います
Accept-Ranges: bytes
Range: bytes=0-8999
これは、ファイルの一部のみを送信するようにサーバーに指示します。次に、ストリームを順番に読み取ります。
範囲ヘッダーを使用してファイルをアセンブルする方法も参照してください。
編集:例
これはうまくいくようです
public static void main(String[] args) throws MalformedURLException, IOException {
URLConnection conn = new URL("http://ftp.debian.org/debian/dists/stable/Contents-i386.gz")
.openConnection();
conn.addRequestProperty("Accept-Ranges","bytes");
conn.addRequestProperty("Range", "bytes=8000000-16000000");
InputStream input = conn.getInputStream();
List<String> serverranges = conn.getHeaderFields().get("Accept-Ranges");
boolean ispartial = serverranges != null && serverranges.get(0).equals("bytes");
byte[] b = new byte[1024];
int l ;
System.out.println(ispartial);
while((l=input.read(b, 0, b.length))>0){
// if isPartial=true, we have server support. We received partial file.
//do stuff with b,l
}
}
すべてのサーバーがこれをサポートしているわけではないことに注意することが重要です。したがって、isPartial変数を確認してください。それが偽の場合。サーバーは部分的な範囲をサポートしておらず、ファイルの先頭を提供します。