private String downloadFile(String urlString, String savePath) {
URL url;
InputStream inputStream;
OutputStream outputStream;
HttpURLConnection con;
long fileSize = 0;
long remains = 0;
long fileLength = 0;
try {
File file = new File(savePath);
if(!file.exists()) {
file.createNewFile();
}
RandomAccessFile output = new RandomAccessFile(file.getAbsolutePath(), "rw");
fileSize = output.length();
output.seek(fileSize);
url = new URL(urlString);
con = (HttpURLConnection)url.openConnection();
con.setRequestProperty("Connection", "keep-alive");
con.setRequestProperty("Range", "bytes=" + String.valueOf(fileSize) + '-');
con.setConnectTimeout(10000);
con.setReadTimeout(20000);
con.connect();
int length = con.getContentLength();
remains = length;
fileLength = remains + fileSize;
inputStream = con.getInputStream();
byte data[] = new byte[1024];
int count;
int total = 0;
while((count = inputStream.read(data)) != -1) {
total += count;
output.write(data, 0, count);
}
output.close();
inputStream.close();
} catch (Exception e) {
//e.printStackTrace();
return "down fail : " + e.getMessage();
}
return "success";
}
* 서버에 따라 이어받기가 안되는 경우도 생김 - 이때 Range의 마지막 지정해야함
예)
con.setRequestProperty("Range", "bytes=" + String.valueOf(fileSize) + '-'
+ String.valueOf(fullSize));
** fullSize는 알아서 구하기~
'android tech.' 카테고리의 다른 글
두 점의 거리 (0) | 2016.12.05 |
---|---|
enum 활용 (0) | 2016.10.06 |
Https 및 언어에 따라 Json 다운로드 (0) | 2015.12.01 |
가속 센서와 자기 센서로 회전 구하기 (0) | 2015.08.31 |
Beacon 연동 (0) | 2015.08.31 |