java哪里學習好?
這里可以考慮一下
java問題
直接給s賦值readContent問題如下:
假設(shè)文件有兩行第二行
讀取兩個循環(huán),**個s賦值readContent,readContent的值為”**行”,然后循環(huán),讀取第二行,再次賦值readContent就會變成”第二行”,**行的丟失;
這里StringBuff其功能是將讀取的內(nèi)容連接成字符串;java教程菜鳥教程視頻。
然而,這里的例子確實有問題,但問題不在StringBuffer在s變量上,s中間兩步不必要,循環(huán)內(nèi)直接改為以下形式:
刪除s.getBytes()和newString
此外,除上述問題外,請總結(jié)本代碼的問題:
1.未釋放文件資源
2.不涉及多線程的,應(yīng)使用StringBuilder字符串拼接串,而不是字符串StringBuffer,因為StringBuilder更快(但是StringBuilder線程不安全,StringBuffer線程安全);
3.異常處理有問題,如有問題IO異常時,返回異常信息的字符串?那么如何區(qū)分字符串是異常的還是從文件中讀取的呢?字符串不應(yīng)返回這里,而應(yīng)直接聲明異常。如有異常,應(yīng)將其扔出,直到頂層程序可以處理。
修改代碼如下:
注意第27行,聲明本方法可能被拋出IOException異常,主程序稍后處理。另外,注意第30行,創(chuàng)建InputStreamReader指定文件編碼為utf為了避免亂碼,如果您的文件存儲在其他類型的編碼中,則會出現(xiàn)亂碼。
調(diào)用代碼如下:
getContent主程序調(diào)用函數(shù)
注18行和21行,分別處理正常情況和異常情況,讀取異常時,將調(diào)用第21行打印異常信息;
整體代碼如下:
全部代碼
接下來我們來看看代碼執(zhí)行情況。
當我們想讀的文件不存在時,執(zhí)行結(jié)果如下:
當我們想讀的文件不存在時,拋出異常
看,當文件不存在時,拋出異常,并通過異常處理程序捕獲和打印,您可以看到哪一行代碼錯誤[getContent(App.java:說明在App.java文件中的getContent方法,文件29行出錯。
2.正常情況下呢?當然是輸出文件的內(nèi)容。我們在以下文件中放下文件”D:\\file.txt”處:
要閱讀的文件內(nèi)容
執(zhí)行結(jié)果如下:
正常情況下,輸出文件的內(nèi)容
**,我不知道你讀了什么書,是不是課本,但我覺得質(zhì)量不高。這里有一些推薦給你的書。你可以買下來看看:
1、HeadFirstjava
2、菜鳥教程Java
3.最權(quán)威的自然是TheJavaLanguageSpecificati了
祝你學習之路順利