乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

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

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

      如果 b 為 null,則拋出 NullPointerException。

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

      如果 len 為 0,則沒有字節(jié)可讀且返回 0;否則,要嘗試讀取至少一個字節(jié)。如果因為流位于文件末尾而沒有可用的字節(jié),則返回值 -1;否則,至少可以讀取一個字節(jié)并將其存儲在 b 中。

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

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

      如果不是因為流位于文件末尾而無法讀取第一個字節(jié),則拋出 IOException。特別是,如果輸入流已關(guān)閉,則拋出 IOException。

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



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


      read是一個很好的讀取器,對流,如應(yīng)用于下載中是一個不錯的算法!例子:
          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);
          }



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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多