小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

基于java的InputStream.read(byte[] b,int off,int len)算法學(xué)習(xí) .

 宇宙之窗 2014-04-30
基于java的InputStream.read(byte[] b,int off,int len)算法學(xué)習(xí)

public int read(byte[] b, int off, int len) throws IOException
將輸入流中最多 len 個(gè)數(shù)據(jù)字節(jié)讀入字節(jié)數(shù)組。嘗試讀取多達(dá) len 字節(jié),但可能讀取較少數(shù)量。以整數(shù)形式返回實(shí)際讀取的字節(jié)數(shù)。
在輸入數(shù)據(jù)可用、檢測(cè)到流的末尾或者拋出異常前,此方法一直阻塞。

如果 b 為 null,則拋出 NullPointerException。

如果 off 為負(fù),或 len 為負(fù),或 off+len 大于數(shù)組 b 的長(zhǎng)度,則拋出 IndexOutOfBoundsException。

如果 len 為 0,則沒(méi)有字節(jié)可讀且返回 0;否則,要嘗試讀取至少一個(gè)字節(jié)。如果因?yàn)榱魑挥谖募┪捕鴽](méi)有可用的字節(jié),則返回值 -1;否則,至少可以讀取一個(gè)字節(jié)并將其存儲(chǔ)在 b 中。

將讀取的第一個(gè)字節(jié)存儲(chǔ)在元素 b[off] 中,下一個(gè)存儲(chǔ)在 b[off+1] 中,依次類(lèi)推。讀取的字節(jié)數(shù)最多等于 len。讓 k 為實(shí)際讀取的字節(jié)數(shù);這些字節(jié)將存儲(chǔ)在元素 b[off] 至 b[off+k-1] 之間,其余元素 b[off+k] 至 b[off+len-1] 不受影響。

在任何情況下,元素 b[0] 至 b[off] 和元素 b[off+len] 至 b[b.length-1] 都不會(huì)受到影響。

如果不是因?yàn)榱魑挥谖募┪捕鵁o(wú)法讀取第一個(gè)字節(jié),則拋出 IOException。特別是,如果輸入流已關(guān)閉,則拋出 IOException。

類(lèi) InputStream 的 read(b, off, len) 方法只重復(fù)調(diào)用方法 read()。如果第一個(gè)這樣的調(diào)用導(dǎo)致 IOException,則從對(duì) read(b, off, len) 方法的調(diào)用中返回該異常。如果對(duì) read() 的任何后續(xù)調(diào)用導(dǎo)致 IOException,則該異常會(huì)被捕獲并將發(fā)生異常時(shí)的位置視為文件的末尾;到達(dá)該點(diǎn)時(shí)讀取的字節(jié)存儲(chǔ)在 b 中并返回發(fā)生異常之前讀取的字節(jié)數(shù)。建議讓子類(lèi)提供此方法的更有效的實(shí)現(xiàn)。



參數(shù):
b - 讀入數(shù)據(jù)的緩沖區(qū)。
off - 在其處寫(xiě)入數(shù)據(jù)的數(shù)組 b 的初始偏移量。
len - 要讀取的最大字節(jié)數(shù)。
返回:
讀入緩沖區(qū)的總字節(jié)數(shù),如果由于已到達(dá)流末尾而不再有數(shù)據(jù),則返回 -1。
拋出:
IOException - 如果發(fā)生 I/O 錯(cuò)誤。
NullPointerException - 如果 b 為 null。


read是一個(gè)很好的讀取器,對(duì)流,如應(yīng)用于下載中是一個(gè)不錯(cuò)的算法!例子:
    public static final int INITIAL_SIZE = 100000;
    private byte buffer[] = new byte[INITIAL_SIZE];
    private int index = 0;

   private int capacity() {
        return (buffer.length - index);
    }

   public void read(InputStream in, int max) throws IOException {
        long k= 0;

        do {
            int size;

            // only read up to the max size, if the max size was
            // specified
            if (max != -1) {
                size = Math.min(capacity(), max);
            } else {
                size = capacity();
            }

            // actually read the block
            k= in.read(buffer, index, capacity());

            // quit if we hit EOF
            if (k< 0) {
                break;
            }

            // adjust capacity if needed
            index += k;

            if (capacity() < 10) {
                expand();
            }

            // see if we hit the max length
            if (max != -1) {
                max -= l;
                if (max <= 0) {
                    break;
                }
            }
        } while (k!= 0);
    }



    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多