最近在學習java的輸入流,用FileInputStream讀取文件不能讀取全部內容,都去的文件如下圖:
注意:文件只有3行!!!!
在myeclipse中的輸入如下圖:
注意:輸出只有2行!!!!
實在找不出哪裡錯了,還請不吝賜教,非常感謝!
代碼如下:
package firPrj;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class FileReaderClass {
public static void main(String []args){
FileReaderClass fileReader = new FileReaderClass();
System.out.println("readByByte:");
fileReader.readByByte("c:\\file.txt");
}
private void readByByte(String fileName){
InputStream in = null;
try{
in = new FileInputStream(fileName);
int tem = -1;
while((tem = in.read()) != -1){
System.out.write(tem);
}
} catch(IOException e){
e.printStackTrace();
} finally{
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
樓主。。你輸出的時候用的是System.out.write()方法,write()方法和print()方法的區別是一個輸出字符流,一個輸出字節流。
字符流有緩沖,即會把內容緩沖在內存中,只有flush()的時候才輸出。
所以你在while循環後面加個System.out.flush();即可全部輸出了。。
你可能會問為什麼前面兩行會輸出,這就要看write()的源碼了,你會發現 if ((b == '\n') && autoFlush){out.flush();}
至此真相大白了吧。。前兩行後面有換行所以會自動flush()