본문 바로가기

android tech.

파일 이어받기

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