簡體   English   中英

InputStream讀取不返回-1

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM