在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ java的讀取流問題,請教

java的讀取流問題,請教

下面是一段可以正常執(zhí)行的代碼,里面有個問題我不太明白,見里面的注釋

    /**
     * 從輸入流中獲取字節(jié)數(shù)組
     * @param inputStream
     * @return
     * @throws IOException
     */
    private static  byte[] _readInputStream(InputStream inputStream) throws IOException {
        byte[] buffer = new byte[1024];
        int len = 0;
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        while((len = inputStream.read(buffer)) != -1) { //!問題就在這里,這個是每次讀取1024字節(jié)嗎?那如果被讀取的流最后根本就沒有1024字節(jié),那這里不是讀取失敗了嗎?那豈不是讀取的文件都會缺少一部分?
            bos.write(buffer, 0, len);
        }
        bos.close();
        return bos.toByteArray();
    }
回答
編輯回答
裸橙

read(byte[] buffer) 的返回值就是本次讀取到的字節(jié)數(shù),這個值最大的時候就是數(shù)組 buffer 的長度;如果已經(jīng)讀到流的末尾,就返回 -1。

順便說一下,我喜歡這樣寫:

for (int len; (len = inputStream.read(buffer)) != -1; ) {
    ...
}
2017年3月9日 06:10
編輯回答
萢萢糖

假如最后沒有1024,那么len就等于剩余的。

2018年1月23日 23:49
編輯回答
青瓷

碰到結(jié)束符,就讀取結(jié)束了,這個時候len 不等于1024

2018年5月20日 17:13
編輯回答
枕邊人

讀完了就返回-1

2018年2月23日 15:12