程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 方法-java中關於自己建的一個緩沖流中的問題

方法-java中關於自己建的一個緩沖流中的問題

編輯:編程綜合問答
java中關於自己建的一個緩沖流中的問題

1 import java.io.*;
2 //創建的這個類其實還是調用的FileReader的read方法,所以它會拋出IOException;
3 class MyBufferedReader{
4 //屬性(要想使用這個緩沖流就得先創建一個這個文件流,得把它弄成屬性作為一個參數);
5 private FileReader fr;
6 public MyBufferedReader(FileReader fr){
7 this.fr=fr;
8 }//構造方法
9 public String myReadLine()throws Exception{
10 //創建一個容器,來儲存所讀取的每個字符;
11 StringBuilder sb=new StringBuilder();
12 //通過read方法將讀到的數據一一放入到容器裡
13 int i=0;
14 while((i=fr.read())!=-1){
15 if(i=='\r') continue;
16 如果遇到換行符,才返回的話;那麼最後一行是不會返回的,雖已讀取到但沒返 回
17 if(i=='\n') return sb.toString();
18 else sb.append((char)i);//放入容器
19 }
20

21 //修補方法:
22 if(sb.length()!=0){return sb.toString();
23 }
24 return null;//注意要有返回值
25 }
26 }
27 class MyBuffered{
28 public static void main(String[] args)throws Exception{
29 FileReader fr=new FileReader("china.txt");
30 MyBufferedReader mfr=new MyBufferedReader(fr);
31 String s=null;
32 while(s=mfr.myReadLine())!=null){
33 System.out.println(s);
34 }
35 fr.close();
36 }
37 }

我想確定一下這個代碼裡面的15行與17行是不是可以去掉啊?去掉有什麼影響啊?我試了試是一樣的,求前輩們解答!!
還有就是22行中的為什麼不能將其改為:
if(sb.toString()!=0){return sb.toString();
}


最佳回答:


FileReader是一個一個字節讀取,判斷換行符,是需要的,當有沒有在一些情況下顯示的結果可能一樣,有些顯示會忽略這些字符,如果你要對字節分析的話,就不要去掉
22行,不要改,因為如果sb中有特殊字符,你這樣判斷就會有問題

liuhuabing760596103
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved