2013-10-23 2 views
0

이 코드를 사용하여 파일에 쓰려고하는데 IndexOutOfBoundException이 표시됩니다.파일에 쓰는 중 IndexOutOfBoundException

InputStream is = res.openStream(); 
FileOutputStream fos = new FileOutputStream(file); 
byte[] array = new byte[1024]; 
for(int i = is.read(array); i != 1; i=is.read(array)) { 
     fos.write(array, 0, i); 
} 

쓸 수있는 바이트 수는 어떻게 확인할 수 있습니까?

+0

당신 내가 1''과 다른 경우에만 루프 휴식합니다. 읽을 것이 없으면'is.read' 메쏘드는 -1을 반환합니다. – Matthias

+0

와우 나는 그것을 어떻게 든 놓쳤다 –

+0

그것은 놓칠 쉬운 보통 보통이다 :) 모두에게 항상 일어난다. – Matthias

답변

3

읽을 내용이 없으면 read 메서드는 -1이고 1은 반환하지 않습니다. 따라서 루프에서 체크해야합니다 :

for(int i = is.read(array); i != -1; i=is.read(array)) 
관련 문제