当前位置 - 養生大全網 - 夏季養生 - Java問題

Java問題

這裏直接給readContent賦值s有問題,問題如下:

假設文件有兩行。

首行

預備之物

然後循環讀取兩次,第壹次s賦給readContent,readContent的值為“第壹行”,然後循環,讀取第二行,再次賦值,那麽readContent就會變成“第二行”,第壹行的值就丟失了;

這裏StringBuff的作用是將讀取的內容連接成壹個字符串;

但是,這裏的例子有問題,但問題不在StringBuffer上。在S變量上,S的中間兩步是不必要的,循環直接改成如下形式:

刪除s.getBytes()和新字符串。

另外,除了上面的問題,我們來總結壹下這段代碼的問題:

1.文件資源尚未釋放。

2.在不涉及多線程的情況下,字符串拼接應該使用StringBuilder類而不是StringBuffer,因為StringBuilder更快(但StringBuilder線程不安全,StringBuffer線程安全);

3.異常處理有問題。如果有IO異常,返回異常信息的字符串?那麽如何區分這個字符串是異常的還是從文件中讀取的呢?妳應該直接聲明壹個異常,而不是返回壹個字符串,並拋出它,直到能夠處理它的頂層程序能夠處理它。

基於以上幾點,修改代碼如下:

註意第27行,聲明這個方法可能拋出壹個IOException異常,這個異常將由主程序稍後處理。另外,註意第30行。創建InputStreamReader時,您將文件編碼指定為utf8以避免亂碼。如果您的文件存儲其他編碼類型,將出現亂碼。

調用代碼如下:

getContent函數調用主程序。

請註意,18和21行分別處理正常和異常情況。當讀取異常時,將調用21行來打印異常信息。

整體代碼如下:

所有代碼

接下來,我們來看看代碼執行。

1.當我們要讀取的文件不存在時,執行結果如下:

當我們要讀取的文件不存在時,就會拋出異常。

看,當文件不存在時,會拋出壹個異常,由異常處理程序捕獲並打印出來。可以看到哪壹行代碼是錯的[getContent(App.java:29)],說明App.java文件中的getContent方法是錯的,文件的29行是錯的。

2.正常情況下呢?當然,輸出文件的內容,我們在“D:\\file.txt”中放壹個包含以下內容的文件:

要讀取的文件內容

實施結果如下:

正常情況下,輸出文件的內容。

最後,不知道妳看的是什麽書,是不是教材,感覺質量不高。下面推薦幾本書給妳買下來看看:

1、頭先java

2、菜鳥教程Java

3、最權威的,自然是Java?語言規範

祝妳學習之路壹帆風順。