JAVA 다 중 스 레 드 다운로드 및 정지점 전송
4447 단어 자바 다 중 스 레 드
키 코드 키 위치: 정지점 설정
http2.setRequestProperty("RANGE","bytes="+startl+"-");//정지점 위 치 를 설정 하고 서버 에 파일 의 어느 바이트 부터 읽 어 달라 고 요청 합 니 다. osf. seek (startl); /로 컬 파일 을 어느 바이트 부터 쓸 지 설정 합 니 다.
단일 스 레 드 라면 다운로드 파일 이 존재 하 는 지 먼저 판단 해 야 합 니 다.존재 하면 정지점 전송 을 시작 합 니 다. 방법 은 다 중 스 레 드 와 같 습 니 다. 정지점 전송 은 마지막 전송 이 중 단 된 바이트 에서 시작 되 기 때문에 먼저 마지막 으로 중 단 된 위 치 를 가 져 와 야 합 니 다. 파일 길이 (단일 스 레 드 에 대한) f. length () 인 다음 HTTP 요청 헤더 속성 RANGE 를 설정 합 니 다. 이 속성 은 서버 가 어느 것 부터 파일 을 읽 는 지 알려 줍 니 다.로 컬 파일 쓰기 시작 바이트 설정 및 마지막 전송 정지점 에서 계속 쓰기 (정지점 전송)
osf. seek (offset) / / 이 방법 은 offset 다음 바이트 부터 파일 을 쓰기 시작 하도록 설정 합 니 다. 주의: 다 중 스 레 드 는 파일 길 이 를 파일 쓰기 시작 바이트 로 할 수 없습니다. 마지막 으로 읽 고 쓴 위 치 를 설정 해 야 합 니 다. 빠 른 다운 로드 는 이 방법 을 사용 하 는 것 입 니 다.
다음은 하나의 예 이다.
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;
public class DownloadThread extends Thread {
String urlt;
int startl;
int end;
String fileName;
RandomAccessFile osf;
public DownloadThread(int i, String url, String fileName, int start, int end) {
this.setName("t" + i); //
this.urlt = url; //
this.fileName = fileName;
this.startl = start; // /
this.end = end;//
}
public void run() {
try {
osf = new RandomAccessFile(fileName, "rw");
URL url = new URL(urlt);
HttpURLConnection http2 = (HttpURLConnection) url.openConnection();
http2.setRequestProperty("User-Agent", "NetFox");
http2.setRequestProperty("RANGE", "bytes=" + startl + "-");// , 。
osf.seek(startl);//
InputStream input = http2.getInputStream();
byte b[] = new byte[1024];// , 1024
int l;// ,
int i;
l = 0;
System.out.println(" "+this.getName() + ": ...");
while ((i = input.read(b, 0, 1024)) != -1 && l < end) { // , 1024
osf.write(b, 0, i);
b = new byte[1024];// ,
l += i;
}
System.out.println(" "+this.getName() + ": ...");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.io.File;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
public class DownloadFile {
/**
* @param args
*/
static int len;//
static int bn;//
static int tn; //
static String urlt;//
static String fileName;
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
urlt = "http://im.baidu.com/download/BaiduHi_4.2_Beta.exe";
fileName = "C:\\"+ urlt.split("//")[1].split("/")[urlt.split("//")[1].split("/").length - 1];
System.out.println("FileName:"+fileName);
URL url = new URL(urlt);
HttpURLConnection http = (HttpURLConnection) url.openConnection();
System.out.println("FileSize:" + http.getContentLength());
tn = 5;// 5 tn = 5;
len = http.getContentLength() / tn;// ( ) , , ,
File f = new File(fileName);
if (f.exists()) {
f.delete();
}
System.out.println("TEMP :" + f.length());
Thread t;// ,
for (int j = 0; j < tn; j++) {
if (j == tn - 1) {//
bn = len + (http.getContentLength() % tn);
} else {
bn = len;
}
System.out.println("t" + j + " :" + bn + " :" + len * j);
t = new DownloadThread(j, urlt, fileName, len * j, bn);
t.start();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 다 중 스 레 드 다운로드 및 정지점 전송정지점 전송 과 다 중 스 레 드 다운로드 원 리 는 같 습 니 다. http2.setRequestProperty("RANGE","bytes="+startl+"-");//정지점 위 치 를 설정 하고 서버 에 파일 의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.