作者tkcn (小安)
看板java
标题Re: [问题] 有关FileInuptStream...
时间Fri Apr 28 19:44:30 2006
※ 引述《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