InputStream in = cSocket.getInputStream();
FileOutputStream fos;
BufferedInputStream br= new BufferedInputStream(in);
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "test" + File.separator +"sample.jpg");
fos=new FileOutputStream(file);
BufferedOutputStream fs=new BufferedOutputStream(fos);
int cnt=0;
while (true){
cnt++;
int s = br.read();
if(s<0)
break;
fs.write(s);
Log.e("error",String.valueOf(s)+","+String.valueOf(cnt));
fs.flush();
}
일부러 while문이 얼마나 도는지 확인해보려고 바이트 버퍼를 사용하지않고 돌려서 로그를 찍어보니


파일의 크기와 완전히동일하게 로그가 찍힌걸 확인할수 있었습니다.
그리고 저 코드를 돌림으로써 파일이 생성되었는데

이또한 저 파일의 크기와 완전히 동일합니다.
그런데 문제는 BufferedInputStream.read()메서드가 더이상 읽을것이 없으면 -1을 반환한다고 하는데
그래서 while문 무한루프 빠져나가는 조건이 read()의 반환값이 0보다 작게되면 빠져나가도록 했는데
파일을 끝까지 다읽어도 -1을 반환하지않아서 read()가 무한대기에 빠지면서 무한루프에서 빠져나갈수가 없습니다.
바이트스트림은 -1을 반환하는게 아닌가요?
저기서어떻게 조건을 주어야 while문을 빠져나갈수 있을까요,,,