<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
    請問如何解決
    主站蜘蛛池模板: 97视频免费观看2区| 亚洲av日韩av天堂影片精品| 1000部拍拍拍18免费网站| 国产精品无码免费专区午夜| 亚洲男人的天堂网站| 亚洲最新中文字幕| 在线观看亚洲人成网站| 国产精品久久久亚洲| 亚洲日韩中文字幕日韩在线| 免费国产a国产片高清网站| 毛片免费观看网址| 国产精彩免费视频| 69影院毛片免费观看视频在线| 九九热久久免费视频| 香蕉视频免费在线| 亚洲AV无码AV日韩AV网站| 国产 亚洲 中文在线 字幕| 亚洲午夜国产精品无卡| 亚洲激情校园春色| 亚洲精品中文字幕乱码影院| 亚洲国产综合91精品麻豆| 亚洲va国产va天堂va久久| 亚洲精品成人网站在线观看| 亚洲夜夜欢A∨一区二区三区| 国产精品亚洲二区在线观看| 亚洲国产91精品无码专区| 亚洲第一区精品日韩在线播放| 国产高清在线免费视频| 国产成人在线观看免费网站 | 亚洲国产无套无码av电影| 亚洲AV蜜桃永久无码精品| 亚洲国产香蕉人人爽成AV片久久| 国产人成免费视频| 国产免费观看黄AV片| 亚洲国产午夜福利在线播放| 亚洲中久无码不卡永久在线观看| 在线日韩日本国产亚洲| 亚洲爆乳精品无码一区二区三区| 亚洲AV无码一区二区乱孑伦AS| 久久久久亚洲AV片无码| 亚洲高清无在码在线无弹窗|