코드 사본은 다음과 같습니다.
패키지 com.hongyuan.test;
import java.io.file;
import java.io.fileoutputStream;
import java.io.ioexception;
import java.io.inputstream;
import java.io.outputStream;
import java.net.httpurlConnection;
java.net.malformedurlexception import;
import java.net.url;
import java.net.urldecoder;
공개 클래스 제출자 부하 {
공개 정적 최종 문자열 local_path = "d :/";
public static void main (String [] args) {
// 다운로드 할 파일 주소
끈 fileurl = "http://211.162.55.16/cdn.baidupcs.com/file/6a73dab7c03023a9835cc73? 1826-250528-130564002 & time = 1397293108 & sign = fdtaxer-dcb740cccccccccccccc41e5e8fedcff06b08120 3-mqkoerdtxpyqwwyjki%2bxkjpxn5k%3d & to = cb & fm = n, b, b, u, nc & newver = 1 & 만료 = 1397297563 & rt = sh = 854979042 & logid = 17515718181818181818181818181818181818181 %a8%8b%e5%ba%8f%e8%ae% BE%E8%AE%A1%20%E7%AC%AC5%E7%89%88.pdf & WSHC_TAG = 0 & WSIPHOST = IPDBM ";
inputStream in = null;
outputStream out = null;
httpurlconnection conn = null;
문자열 filename = null;
노력하다 {
// 연결을 초기화합니다
url url = new URL (fileUrl);
conn = (httpurlConnection) url.openConnection ();
conn.setdoinput (true);
conn.setdooutput (true);
// 파일 이름을 얻습니다
문자열 배치 = conn.getheaderfield ( "Content-Disposition");
if (cutposition! = null &&! "". Equals (cutposition)) {
// 처음부터 파일 이름을 가져옵니다
filename = clisposition.split ( ";") [1] .split ( "=") [1] .replaceall ( "/" "," ");
}또 다른{
// 주소에서 파일 이름을 가져옵니다
filename = fileurl.substring (fileurl.lastindexof ( "/")+1);
}
if (filename! = null &&! "". Equals (filename)) {
// 파일 이름을 디코딩합니다
filename = urldecoder.decode (filename, "utf-8");
}또 다른{
// 파일 이름을 검색 할 수 없으면 임의 생성이 생성됩니다.
filename = "file _"+(int) (math.random ()*10);
}
// 데이터를 읽습니다
if (conn.getResponseCode () == httpurlConnection.http_ok) {
바이트 [] 버퍼 = 새로운 바이트 [2048];
in = conn.getInputStream ();
out = new FileOutputStream (새 파일 (local_path, filename));
int count = 0;
int 완료 = 0;
int size = conn.getContentLength ();
while (count = in.read (buffer))! = -1) {
if (count! = 0) {
out.write (버퍼, 0, count);
완료+= 수;
System.out.printf ( "###################################################### ################# ---->%1 $ .2f %%/n ", (double) 완성 된/size*100);
}또 다른{
부서지다;
}
}
}
} catch (marformedurlexception e) {
e.printstacktrace ();
} catch (ioexception e) {
e.printstacktrace ();
} 마지막으로{
노력하다 {
out.close ();
넣다();
conn.disconnect ();
} catch (ioexception e) {
e.printstacktrace ();
}
}
}
}