[英]InputStream read doesnt return -1
嘿我正在嘗試使用java套接字發送文件,但我遇到了InputStream類的讀取函數問題。 我有這個代碼
InputStream is = sock.getInputStream();
fos = new FileOutputStream(FILE_TO_RECEIVED);
bos = new BufferedOutputStream(fos);
byte [] buffer = new byte[4096];
int bytesRead;
int totalLength = 0;
while(-1 != (bytesRead = is.read(buffer))) {
bos.write(buffer, 0, bytesRead);
totalLength += bytesRead;
}
bos.close();
fos.close();
is.close();
但它最終停止了。 我已經使用System.err.println和調試來檢查它,看起來像is.read永遠不會給緩存結束時的-1。 所以例如我有一個5000字節的文件,第一個read()返回4096,然后是4(文件的其余部分),然后沒有任何導致無限循環的文件。 可能是什么問題?
我真的很感激你能提供的任何幫助,因為我已經被困在那里兩個小時了。
當緩沖區結束時,read永遠不會給-1
那不對。 當緩沖區結束時,它不應返回-1'。 在流結束之前它不會返回-1,直到對等體關閉連接才會發生。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.