2011-03-11 6 views
0

Inputstream을 사용하여 네트워크에서 데이터를 얻고 있습니다. InputStream에 뭔가가 있는지 확인하기 위해 로그를 만들고 싶습니다. Log("InputStream = "+ is.read()) 그리고 내가 얻을 InputStream = 123 하지만 나중에 그것을 사용할 때 InputStream = -1 얻을. 제 생각에는 이터레이터의 위치와 관련된 것이 있습니다 만, API of Java에서 (mark()을 사용할 때) reset()을 사용하여 inputStream을 다시 읽어야한다는 것을 알지 못했습니다.InputStream을 읽는 중

답변

2

올바른 - 고객에게 읽음. 스트림이나 반복기를 사용하면 재설정하지 않고 다시 사용할 수 없습니다.

1

InputStream는 다음 문자에서 "엿보기"를 허용하지 않습니다. 대신에 모든 읽기 메소드는 데이터가 사용 가능할 때까지 차단됩니다.

엿보기가 필요한 경우 Java NIO을 사용하십시오. Selector은 채널에 데이터가 준비되어 있는지 알려줍니다.

0

PushbackInputStream으로 스트리밍 할 수 있습니다.

int r = in.read(); 
Log("InputStream = "+ r); 
in.unread(r); 

을하고 다음 읽기는 문자

+0

문자가 없으면 중단되지 않습니까? –

0
examplemark() 사용

reset()을 다시 읽 입력 스트림을 다시 읽어하지만 사전 지식에 의존 : 그럼 당신은이 작업을 수행 할 수 적합한 readlimit. 필요에 따라 유용한 버퍼 전략이 될 수 있습니다.