天天看點

關于bufferedreader的read()與readline()讀取出錯的原因

 以前學習java的時候也沒有太在意,直到最近做項目時使用了才發現這個問題,總是第一個字元輸不出來

bufferedreader這個類借用别人的話來說,就是一個包裝類

它可以包裝字元流,将字元流放入緩存裡,先把字元讀到緩存裡,到緩存滿了或者你flush的時候,再讀入記憶體,就是為了提高讀的效率而設計的。      

讀取一個txt檔案,方法很多種而我使用的是字元流來讀取

int c; 

FileReader file = new FileReader("D:\\emDemo.java");

   BufferedReader br = new BufferedReader(file);

   while((c=br.read())!=-1){

    System.out.println(br.readLine());

   }

發現每行的第一個字元都沒有顯示出來,後來發現  c=br.read())!=-1  每次都會先讀取一個位元組出來,是以後面的br.readLine());

讀取的就是每行少一個位元組

是以,應該使用

String input = null;

   while ((input=br.readLine())!=null){

    System.out.println(input);

   }

這樣就能解決了