안드로이드 개발 질문/답변
(글 수 45,052)
단말에서 웹서버를 통해 파일 다운로드 하고 있는데요
아래와 같이 처리 하고 있습니다.
BufferedInputStream bis = new BufferedInputStream(is);
fos = new FileOutputStream(mPath);
BufferedOutputStream bos = new BufferedOutputStream(fos);
int n = 0;
while((n = bis.read()) != -1) {
bos.write(n);
}
6M 정도의 파일을 받는데 위와같이 처리하면 7k정도 작게 파일을 받게 되구요...
버퍼를 설정하여
byte[] data = new byte[512];
BufferedInputStream bis = new BufferedInputStream(is);
fos = new FileOutputStream(mPath);
BufferedOutputStream bos = new BufferedOutputStream(fos);
int n = 0;
while((n = bis.read(data)) != -1) {
bos.write(n);
}
로 파일을 받는 처리를 하면 10k 조금 넘게만 파일에 쓰여집니다.
1바이트씩 받을 경우에만 파일이 완벽하게 받아지는데요...그럼 시간이 너무 오래 걸려서요
버퍼 사용하여 파일 받는 방법이 왜 사이즈 오류가 나는지 궁금합니다....;;
아래와 같이 처리 하고 있습니다.
BufferedInputStream bis = new BufferedInputStream(is);
fos = new FileOutputStream(mPath);
BufferedOutputStream bos = new BufferedOutputStream(fos);
int n = 0;
while((n = bis.read()) != -1) {
bos.write(n);
}
6M 정도의 파일을 받는데 위와같이 처리하면 7k정도 작게 파일을 받게 되구요...
버퍼를 설정하여
byte[] data = new byte[512];
BufferedInputStream bis = new BufferedInputStream(is);
fos = new FileOutputStream(mPath);
BufferedOutputStream bos = new BufferedOutputStream(fos);
int n = 0;
while((n = bis.read(data)) != -1) {
bos.write(n);
}
로 파일을 받는 처리를 하면 10k 조금 넘게만 파일에 쓰여집니다.
1바이트씩 받을 경우에만 파일이 완벽하게 받아지는데요...그럼 시간이 너무 오래 걸려서요
버퍼 사용하여 파일 받는 방법이 왜 사이즈 오류가 나는지 궁금합니다....;;
private int downloadFile(String fileUrl){
URL myFileUrl =null;
byte[] data = new byte[512];
try {
myFileUrl= new URL(fileUrl);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
String mPath = "sdcard/apk/EDAILY_STOCK_nh.apk";
FileOutputStream fos;
File f = new File(mPath);
if(f.exists()) f.delete();
if ( f.createNewFile() ) {
BufferedInputStream bis = new BufferedInputStream(is);
fos = new FileOutputStream(mPath);
BufferedOutputStream bos = new BufferedOutputStream(fos);
int n = 0;
while((n = bis.read()) != -1) {
bos.write(n);
}
bos.close();
fos.close();
} else {
f.delete();
return -1;
}
} catch (IOException e) {
e.printStackTrace();
return -1;
}
return 0;
}


