Re: [問題] 讀檔不完整 (ANSI 文字檔)

看板java作者 (Mr. Pan)時間12年前 (2013/05/23 16:50), 編輯推噓3(301)
留言4則, 4人參與, 最新討論串2/3 (看更多)
※ 引述《henry035 (Rex)》之銘言: : 環境:JDK 1.6、Windows XP : 讀入的文字檔大約 1MB 左右,存檔編碼是 ANSI code : 用以下的程式碼做讀檔時,印文字檔案內容到部分就會停下來, : 而且印的那一行只會印部分,但最後會印出 Done. : public static void main(String[] args) throws IOException { : Scanner fin = new Scanner(new File("text.txt")); : while(fin.hasNext()){ : String str = fin.nextLine(); : System.out.println(str); : } : System.out.println("Done."); : fin.close(); : } 單看上面這邊我會覺得是因為 while 用 hasNext 判斷 然可是讀取用 nextLine , 雖然還沒有想過在怎樣的情 況下會發生這種狀況 next 在抓 空格 or 換行 , nextLine 只抓換行 雖然說有 hasNext 應該會有 hasNextLine.... 不過建議先把這邊改成一致再重測看看 不然其實就我用了這麼久 Scanner 應該是不會遇到這個問題才對... : 如果用記事本另存新檔成 UTF-8,就可以全部讀完檔案, : 轉成 UTF-8 之後的檔案,再重新存檔成 ANSI 又會停到同樣的位置。 : 猜測可能是因為有中文字元的關係,但停下來的位置並非有中文的那一行, : 不知道是不因為 Scanner 的 Buffer 讀到有中文字就會停下來? : (檔案中的中文字都是可以用ANSI呈現) : 想請問這實際上是什麼問題? : 如果讀檔格式一定是 ANSI 的話,有什麼好用的處理方式呢? : 謝謝。 : 題外話:最近執行一隻純C寫的程式,讀檔ANSI沒問題,UTF-8卻讀檔不完整。 不過加上後面這段,上面那個的可能性或許就會變低了 @@ 先試著改成一致,在測試看看哪邊有問題吧,如果可以大概描述一下中斷前 後文字檔有沒有甚麼特性 是說現在用輸入檔都習慣 UTF-8 了.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.39.75

05/23 16:57, , 1F
中斷後,文字檔沒有印出來的後面幾行有中文字。
05/23 16:57, 1F

05/23 17:16, , 2F
嗚嗚... 我最近才遇到輸出格式一定得 Big5 的 case
05/23 17:16, 2F

05/23 19:53, , 3F
我會想看看那份文字檔...
05/23 19:53, 3F

05/24 01:21, , 4F
可以提供一下文字檔嗎XD 想研究看看
05/24 01:21, 4F
文章代碼(AID): #1HdTXdkU (java)
文章代碼(AID): #1HdTXdkU (java)