반응형
출처 - http://regularmotion.kr/263
아래 코드를 이용하여 이어받기가 적용된 파일 다운로더를 만들 수 있습니다.
1. RandomAccessFile을 만들어서 원하는 위치부터 writing 할 수 있도록 준비를 하고.
이 부분이 이어받기를 위한 부분이다.
아래 코드를 이용하여 이어받기가 적용된 파일 다운로더를 만들 수 있습니다.
Java와 Android 기반 Program에 적용하실 수 있습니다.
1. RandomAccessFile을 만들어서 원하는 위치부터 writing 할 수 있도록 준비를 하고.
2. 원하는 URL로 connection을 생성.
3. Header에 Range 정보를 추가
conn.setRequestProperty("Range", "bytes=" + offset + '-');
4. 다운로드 시작
static final int DOWNLOAD_DONE = 0; static final int DEFAULT_TIMEOUT = 30000; long fileSize, remains, lenghtOfFile = 0; mUrl = args[1]; File file = new File('path'); if (file.exists() == false) { file.createNewFile(); } RandomAccessFile output = new RandomAccessFile(file.getAbsolutePath(), "rw"); fileSize = output.length(); output.seek(fileSize); URL url = new URL(mUrl); URLConnection conn = url.openConnection(); conn.setRequestProperty("Range", "bytes=" + String.valueOf(fileSize) + '-'); conn.connect(); conn.setConnectTimeout(DEFAULT_TIMEOUT); conn.setReadTimeout(DEFAULT_TIMEOUT); remains = conn.getContentLength(); lenghtOfFile = remains + fileSize; if ((remains <= DOWNLOAD_DONE) || (remains == fileSize)) { return null; } InputStream input = conn.getInputStream(); byte data[] = new byte[1024]; int count = 0; if (fileSize < lenghtOfFile) { while((count = input.read(data)) != -1) { output.write(data, 0, count); } } output.close(); input.close();
이 부분이 이어받기를 위한 부분이다.
현재 파일 사이즈(fileSize)를 얻어온 다음, 이 부분부터 전송해달라고 헤더에 추가하는 부분!!
conn.setRequestProperty("Range", "bytes=" + String.valueOf(fileSize) + '-');
반응형
'개발 > 안드로이드' 카테고리의 다른 글
[android]VideoView 크기 변경 (0) | 2011.12.13 |
---|---|
[안드로이드]캘린더(calendar) 정보 가져오기 (0) | 2011.12.12 |
안드로이드 외부 DB Assets에 넣어서 사용 (1) | 2011.12.09 |
엑셀(Excel) 파일 데이타를 `.CSV`로 변환하여 SQLite에 넣기 (0) | 2011.12.09 |
안드로이드 3.0 Fragments API (0) | 2011.10.10 |
댓글