<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    軟件是對質量的不懈追求

    java中如何將OutputStream轉換為InputStream(翻譯)

    原文地址:http://ostermiller.org/convert_java_outputstream_inputstream.html

     如果你曾經使用java IO編程,你會很快碰到這種情況,某個類在OutputStream上創建數據而你需要將它發送給某個需要從輸入流讀取數據的類。
    你很快會被問道,“java中如何將OutputStream轉換為InputStream?”

     方法一:使用字節數組緩存數據
      最簡單的方法是用字節數組緩存數據。代碼如下:
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         class1.putDataOnOutputStream(out);
         class2.processDataFromInputStream(
            new ByteArrayInputStream(out.toByteArray())
         );
      于是,OutputStream就被轉換為InputStream了。

    方法二:使用管道
      第一種方法的問題是你必須有足夠的內存緩存所有數據。你可以使用文件系統緩存更多數據,但無論如何可處理數據的大小還是受到限制。
    解決方法是創建一個線程產生數據到PipedOutputStream。當前線程可從中讀取數據。
      PipedInputStream in = new PipedInputStream();
      PipedOUtputStream out = new PipedOutputStream(in);
      new Thread(
        new Runnable(){
          public void run(){
            class1.putDataOnOutputStream(out);
          }
        }
      ).start();
      class2.processDataFromInputStream(in);

    方法三:使用循環緩存區
      方法二中的兩個管道流,實際上管理著一個隱藏的循環緩存區。使用一個顯式的循環緩存區更易于理解。CircularBuffers 有如下優點:
         一個CircularBuffers類而不是兩個管道類。
        較于緩存所有數據和額外線程的方法更容易使用。
        你可以更改緩存大小而不必受限于管道緩存區1K的固定緩存大小。
     
      多線程情形:
         CircularByteBuffer cbb = new CircularByteBuffer();
      new Thread(
        new Runnable(){
          public void run(){
            class1.putDataOnOutputStream(cbb.getOutputStream());
          }
        }
      ).start();
      class2.processDataFromInputStream(cbb.getInputStream());
      單線程情形:
      // buffer all data in a circular buffer of infinite size
      CircularByteBuffer cbb = new CircularByteBuffer(CircularByteBuffer.INFINITE_SIZE);
      class1.putDataOnOutputStream(cbb.getOutputStream());
      class2.processDataFromInputStream(cbb.getInputStream());


    posted on 2009-05-17 21:40 BlakeSu 閱讀(1097) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 九九综合VA免费看| 国产亚洲精品美女| 久操视频在线免费观看| 中文字幕亚洲一区| 九九久久国产精品免费热6| 五月婷婷亚洲综合| 一级做a爰片久久毛片免费陪| 亚洲成AV人在线观看网址| 黄页网址在线免费观看| 亚洲欧洲自拍拍偷精品 美利坚| 一级毛片免费播放视频| 亚洲夜夜欢A∨一区二区三区| 三上悠亚电影全集免费| 亚洲国产高清在线| 真人做A免费观看| 亚洲色最新高清av网站| 在线观看免费国产视频| 免费观看亚洲人成网站| 最新亚洲成av人免费看| 午夜不卡久久精品无码免费| 亚洲免费视频网址| 国产国产人免费人成免费视频| 免费国产黄网站在线观看动图 | 成熟女人牲交片免费观看视频| 亚洲中文字幕一区精品自拍| 四虎免费永久在线播放| 中文字幕在线免费视频| 亚洲小说区图片区| 国产精品免费视频播放器| 亚洲精品偷拍视频免费观看| 亚洲综合自拍成人| 毛片a级毛片免费播放下载| 一级黄色免费大片| 亚洲白嫩在线观看| 免费va在线观看| 日韩免费高清大片在线| 亚洲av日韩综合一区二区三区 | 亚洲人成人77777网站不卡| 国产伦一区二区三区免费| 久久国产精品萌白酱免费| 亚洲精品无码成人片久久不卡|