<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
    請問如何解決
    主站蜘蛛池模板: 亚洲欧洲视频在线观看| 亚洲AV无码专区国产乱码电影| 亚洲最大的成人网站| 又粗又大又黑又长的免费视频| 日韩亚洲AV无码一区二区不卡| 99久久精品免费精品国产| 久久精品国产亚洲av四虎| 国精产品一区一区三区免费视频| 国产精品亚洲一区二区三区在线| 韩国免费a级作爱片无码| 亚洲伊人久久成综合人影院| 一二三区免费视频| 国产A在亚洲线播放| 97在线视频免费| 国产人成亚洲第一网站在线播放| 天天摸夜夜摸成人免费视频| 精品一区二区三区免费毛片| 国产亚洲美日韩AV中文字幕无码成人 | 又硬又粗又长又爽免费看 | 男人j进女人p免费视频| 国产亚洲成人久久| 91精品国产免费网站| 在线亚洲午夜片AV大片| 五月婷婷亚洲综合| 成人久久免费网站| 亚洲fuli在线观看| 亚洲av麻豆aⅴ无码电影| 无码少妇精品一区二区免费动态 | 亚洲视频免费在线看| 最近中文字幕无免费视频| 边摸边吃奶边做爽免费视频99 | 久久国产亚洲高清观看| 成年性羞羞视频免费观看无限| 日本在线观看免费高清| 亚洲日本在线看片| 国产精品公开免费视频| 国产无遮挡裸体免费视频在线观看| 亚洲一区中文字幕在线电影网| 亚洲精品无码av天堂| 91网站免费观看| 丰满人妻一区二区三区免费视频 |