看板 java 關於我們 聯絡資訊
※ 引述《johnkuokuo@kkcity.com.tw ( )》之銘言: : 以下是我的程式碼 : try{ : FileReader fr=new FileReader("c:\\軟功夫.txt"); : //建立一個名稱為fr的FileReader物件,並且將檔案路徑及檔名傳入 : BufferedReader bf=new BufferedReader(fr); : //建立一個名稱為br的BufferedReader物件,並且將fr傳入 : String str=null; //here you set str =null : String line=null; : int i=0; : while ((line=bf.readLine()) != null) : { : i++ ; //用來算檔案有幾行 : System.out.println("line:"+line); //列印出line的值看一看 : str=str+line; // let's see how it work in first time: null + "xxxx" : System.out.println("str:"+str); //列出str的值看一看 : } : System.out.println("檔案共"+i); //算出檔案有幾行 : System.out.println("檔案內容"+str); //列出檔案的內容 : bf.close(); : fr.close(); : } : catch (Exception e) : { : System.out.println("Exception happens"); : } : ps:: : 我的檔案是一個簡單的記事本檔案..一開始我enter了5次 : 然後才開始寫內容 : 想請問兩個問題.. : 1..我在while的回圈裡面,如果列出line的值來看看,為什麼都沒顯示任何訊息, : 也不會顯示null 因為是 "" , ""和 null的差別應該不需要多說吧 ? :) 你的Enter按鍵觸發的動作可以看作事產生 "\r\n " 而readLine是以 \n (\r也會順便) 做分隔 , 所以前面你的五下 enter 可以看成 "\r\n\r\n\r\n\r\n\r\n" 所以前面五行的readLine的內容會跟 .split("[\r]?\n") 出來的結果差不多,就是依序出現五個 "" 。 : 2. System.out.println("檔案內容"+str); : 這一行我印出檔案內容的時候.為什麼前面會多了一個null的字 理由我在前面說明了 一樣是 "" 和 null的誤用 你應該做的是String str= "" 或者是在開始的時候 , 定義str的起始值。 當你在str 還是 null狀態的時候就做 字串加法 的動作 , null會被當成字串紀錄。 : 3.請問一下bf.close(); : fr.close(); : 這兩行不寫也沒影響,因為我有趣run程式結果.好像都依樣 : 請問這個有必要關掉嗎,雖然書上都是這樣寫說資料流要關掉 : 但不關掉會有差嗎..可不可以舉個不關掉但有差別的例子.謝謝!! 資料串流有開啟最好就關閉(表示操作結束), 這樣系統也不會浪費資源在維持串流的運行。 (特別是對資料庫而言,一個串流就等於是一個資料庫的連結,忘了關影響會很大, 請想像BBS上有一堆幽靈掛站者的現象,雖然沒在動作卻佔著資源。XD) 另外,寫入的串流如果沒有關閉的話,資料是不會進檔案的。 請養成這個好習慣。:) -- 有些累, 所以語氣稍嫌隨便了些,如果有錯就請諸位大德幫忙指證吧。^^ -- I am a person, and I am always thinking . Thinking in love , Thinking in life , Thinking in why , Thinking in worth. I can't believe any of what , I am just thinking then thinking , but worst of all , most of mine is thinking not actioning... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.27.68