Re: [問題] 有關FileInuptStream...
※ 引述《seekyou (galagala~N )》之銘言:
: FileInputStream fis = new FileInputStream("Sample.txt"); //建立fis物件
: int is=fis.read(text); //讀取檔案的位元組
: FileReader fir = new FileReader("Sample.txt");
: BufferedReader bf= new BufferedReader(fir); //讀取檔案行數
: int sum=0;
: while((st=bf.readLine())!= null ) {
: count++;
: sum+=st.length();
: }
: System.out.println("Sample.txt含有"+is+"個位元組 , "+sum+"個字元
: , "+count+"列資料");
: }
: }
: 上面是一個完整的小程式,在讀取一個文字檔內容的位元組,字元數和資料行數
: 執行黃色那兩行時,位元組為358.
: 如果改寫成int is=fis.read(); 則為164個位元組
你可能需要先查詢一下 API
fis.read(text) 回傳的 int 意思是實際讀進了多少 byte
你的檔案總共就是 384 byte,所以 is 就是 384
雖然你沒有提到 sum,我想我就順便講一下
sum 的值為 177,因為 Java 是使用 Unicode,
所以不管是中文字和英文字都算一個 char
177 指的就是 char 的數量
你可以拿 ( 384 - 6*2 - 8 ) / 2
^^ ^^
換行("\r\n") 半形字
至於 fis.read()
則只是讀進一個 char
但因為你的檔案已經到了結尾
所以會讀進什麼東西是不可預測的
跟檔案的長度完全無關
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.131.64.234
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章