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

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

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

    MDA/MDD/TDD/DDD/DDDDDDD
    posts - 536, comments - 111, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    原來BufferedReader不能和InputStream交替使用(轉)

    Posted on 2007-08-03 01:23 leekiang 閱讀(9330) 評論(1)  編輯  收藏 所屬分類: java
    最近寫代碼時發現用BufferedReader把InputStream包裝后,使用BufferedReader讀取后,然后再使用 InputStream讀取時總是發現問題,好像總是丟數據,由于我在流里面同時混了二進制數據與字符串,所以很不好調度,然后專門寫了下面的代碼去測試發現原來是. BufferedReader讀取數據時會把數據從流里面取出一部分緩存,如果你再轉向去用InputStream去讀取的話,BufferedReader緩存里面的數據InputStream是讀取不到的 .


    package bytearray;

    import java.io.BufferedReader;
    import java.io.ByteArrayInputStream;
    import java.io.DataInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;

    public class TestByteArray {

    public byte[] generateByte() {
    // 構造一個測試流,這樣就不用從文件里面讀取了,在這個流里面使用了大量的回車換行("\r\n"),這樣方便過會的測試
    // 過會,我會通過把字符串轉換成byte數組,然后通過ByteArrayInputStream來構造一個數據流
    return "a\r\nbc\r\ndef\r\nghi\r\nj\r\nklmn\r\nopqr\r\ns\r\ntuvwxyz "
    .getBytes();

    }

    public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    TestByteArray self = new TestByteArray();
    byte[] be = self.generateByte();
    InputStream in = new ByteArrayInputStream(be);
    BufferedReader bufferReader = new BufferedReader(new InputStreamReader(
    in));
    // 使用DataInputStream而不直接使用Inputstream是因為這樣方便,因為他提供了讀取行
    // 不過聽說他讀取行時把字節轉變為字符時會有問題,所以不推薦使用,不過我們在這只做測試就沒關系了
    DataInputStream dataInputStream = new DataInputStream(in);

    // 先讀取流里面的一行數據
    System.out.println("bufferReader=" + bufferReader.readLine());
    // 回過頭來使用dataInputStream讀取數據,會發現什么也讀取不到
    System.out.println("dataInputStream=" + dataInputStream.readLine());
    // 回過頭來使用inputstream讀取數據,會發現什么也讀取不到
    System.out.println("in=" + in.read());
    // InputStream讀取不到數據,然后再使用原來的BufferedReader來讀取數據,發現是接著原來讀取的.
    System.out.println("bufferReader=" + bufferReader.readLine());

    //我們上面的字符串比較小,我想如果字符串,大到緩存裝不下的時候,使用inputstream回頭去讀取數據,肯定是能讀取到的
    //這個我就不測試了

    }

    }
    轉自 http://itspy.spaces.live.com/blog/cns!87AF3B24336DF461!180.entry

    評論

    # re: 原來BufferedReader不能和InputStream交替使用(轉)[未登錄]  回復  更多評論   

    2011-11-13 11:00 by Java學習者
    那如何解決上面的內容呢
    BufferedReader br = new BufferedReader(new InputStreamReader(
    System.in);
    int read=13;
    while((read=br.read())!=13)在測試運行時會出現int不能轉換Boolean
    請問如何解決
    主站蜘蛛池模板: 免费能直接在线观看黄的视频 | 91麻豆国产自产在线观看亚洲 | 亚洲国产精品一区二区久久| 亚洲国产高清精品线久久| 免费永久看黄在线观看app| 亚洲第一福利网站在线观看| 亚洲男同帅GAY片在线观看| 亚洲第一页中文字幕| 亚洲熟妇无码AV不卡在线播放| 在线亚洲v日韩v| 99re6在线精品免费观看| 久久综合给合久久国产免费 | 亚洲综合另类小说色区色噜噜| 亚洲国产精品无码专区在线观看| 亚洲日本在线免费观看| 亚洲av日韩精品久久久久久a| 黄桃AV无码免费一区二区三区| 毛片无码免费无码播放| 毛片在线免费视频| 亚洲综合另类小说色区色噜噜| 亚洲精品无码久久久久久久| 亚洲av无码偷拍在线观看| 丁香花在线视频观看免费| 人碰人碰人成人免费视频| 久久午夜免费鲁丝片| 免费看无码自慰一区二区| 亚洲尤码不卡AV麻豆| 亚洲成人网在线观看| 黄网站色视频免费观看45分钟| 国产精品白浆在线观看免费 | **俄罗斯毛片免费| 免费A级毛片无码A∨男男| 亚洲影院在线观看| 视频免费1区二区三区| 99re6免费视频| 亚洲国产精品视频| 亚洲av无码国产综合专区| 巨胸喷奶水www永久免费| 精品女同一区二区三区免费站| 亚洲区日韩区无码区| 国产亚洲精品看片在线观看|