關于BufferedReader的read()和readLine()的區(qū)別
BufferedReader的read()和readLine()區(qū)別
從一個有若干行deep文件中依次讀取各行,處理后輸出,如果用以下方法,則會出現(xiàn)除第一行外首字符丟失的現(xiàn)象
String str = null;
br=new BufferedReader(new FileReader(fileName));
do{
str = buf.readLine());
}while(br.read()!=-1);
以下用法會使每行都少首字符
while(br.read() != -1){
str = br.readLine();
}
原因在于br.read()!=-1這判斷條件上,因為在執(zhí)行這個條件的時候它已經(jīng)讀取了一個字符,然而在這里并沒有對讀取出來的這個字符做處理,所以會出現(xiàn)少一個字符,如果你這里寫的是while(br.readLine()!=null)會出現(xiàn)隔一行少一行。
建議使用一下方法
String str = null;
while((str = br.readLine()) != null){
//System.out.println(str);//此時str就保存了一行字符串
}
這樣應該就可以無字符丟失地得到一行了
小結(jié)一下
使用readLine()一定要注意
1:讀入的數(shù)據(jù)要注意有/r,/n或/r/n
2:沒有數(shù)據(jù)時會阻塞,在數(shù)據(jù)流異常或斷開時才會返回null
3:使用socket之類的數(shù)據(jù)流時,要避免使用readLine(),以免為了等待一個換行/回車而一直堵塞
項目經(jīng)驗
1.讀取一個txt文件,方法很多種我使用了字符流來讀?。榱朔奖悖?/p>
FileReader fr = new FileReader("f:\\TestJava.Java");
BufferedReader bf = new BufferedReader(fr);
//這里進行讀取
int b;
while((b=bf.read())!=-1){
System.out.println(bf.readLine());
}
發(fā)現(xiàn)每行的第一個字符都沒有顯示出來,原因呢:b=bf.read())!=-1 每次都會先讀取一個字節(jié)出來,所以后面的bf.readLine());讀取的就是每行少一個字節(jié)。所以,應該使用
String valueString = null;
while ((valueString=bf.readLine())!=null){
System.out.println(valueString);
}
BufferedReader.readLine()總結(jié)
BufferedReader.readLine()
最近寫了段用于獲取執(zhí)行命令的返回值的代碼,如下:
while(br.readLine()!null)
{
msg=br.readLine();
}
然后顯示的結(jié)果卻是隔行輸出的。想了下, 應該是每調(diào)用一次read()或者readLine(),指針都會移動的。所以得到的是隔行輸出。
正確的代碼如下
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String msg = null;
while((msg = br.readLine())!= null)
{
System.out.println(msg);
}
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
java動態(tài)添加外部jar包到classpath的實例詳解
這篇文章主要介紹了java動態(tài)添加外部jar包到classpath的實例詳解的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09
Spring?boot?Thymeleaf配置國際化頁面詳解
這篇文章主要給大家介紹了關于Spring?Boot?Thymeleaf實現(xiàn)國際化的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring?Boot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2022-07-07
java結(jié)合email實現(xiàn)自動推送功能
這篇文章主要介紹了java結(jié)合email實現(xiàn)自動推送功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
給JavaBean賦默認值并且轉(zhuǎn)Json字符串的實例
這篇文章主要介紹了給JavaBean賦默認值并且轉(zhuǎn)Json字符串的實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
idea中無法自動裝配未找到 ‘XXXXXXX‘ 類型的 Bean
本文主要介紹了idea中無法自動裝配未找到 ‘XXXXXXX‘ 類型的 Bean的原因及三種解決方法,具有一定的參考價值,感興趣的可以了解一下2024-03-03
springboot項目實現(xiàn)斷點續(xù)傳功能
這篇文章主要介紹了springboot項目實現(xiàn)斷點續(xù)傳,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08
java文件操作報錯:java.io.FileNotFoundException(拒絕訪問)問題
在進行編程時,經(jīng)常會遇到因疏忽小細節(jié)而導致的錯誤,如忘記在路徑后添加文件名,本文通過一個具體的修改前后對比示例,解釋了錯誤原因,并給出了解決方案,這類經(jīng)驗分享對編程學習者具有參考價值2024-10-10

