[問題] 讀txt文字檔

看板java作者 (Desperado)時間18年前 (2008/05/28 22:33), 編輯推噓6(603)
留言9則, 5人參與, 最新討論串1/3 (看更多)
想請問一下,如果我要讀一個內容大概有10mb的文字檔, 有什麼比較快的方法嗎? 因為我用 newContent=BufferedReader.readline() oldContent+=newContent 這種方式一行一行讀,感覺非常的慢,已經等半小時了還沒跑完 請問有什麼比較聰明且快的方法嗎?謝謝了... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.92.204

05/28 22:39, , 1F
你有什麼理由需要全部累加!?
05/28 22:39, 1F
這個程式是把txt檔先全部讀出來,再根據我設定的符號去做split 存成文字陣列,再把文字陣列寫到excel裡面 所以我把內容全部累加起來.....請問是否有比較好的方法呢? 謝拉 ※ 編輯: sioo 來自: 59.104.92.204 (05/28 22:43)

05/28 22:46, , 2F
如果你的split不會跨多行怎麼不單行的做呢? 它會跨多行嗎?
05/28 22:46, 2F

05/28 22:47, , 3F
對阿,會跨到多行耶,沒辦法預測會有幾行
05/28 22:47, 3F

05/28 22:57, , 4F
我猜應該是有寫錯.弄成無限回圈.否則 10mb 應該是很快.
05/28 22:57, 4F

05/28 23:00, , 5F
資料量比較少時,程式是跑得完的,所以應該不是無窮loop阿
05/28 23:00, 5F

05/28 23:11, , 6F
那表示你程式裡有很多「虛功」。
05/28 23:11, 6F
虛功??? 好吧,剛寫了個System.out這東西來看程式跑的狀況, 大概一秒鐘跑10行左右吧,txt檔的資料預估50000行以上, 光是把txt檔讀出來就要可能要跑一個半鐘頭.... 好慢.... ※ 編輯: sioo 來自: 59.104.92.204 (05/28 23:19)

05/28 23:32, , 7F
一秒10行太可怕了, 你一行是很長嗎? 貼上你的演算法吧!!!
05/28 23:32, 7F

05/28 23:50, , 8F
你的newContent是String嗎? 試試用StringBuilder
05/28 23:50, 8F
好像也沒什麼演算法 File file=new File("data.txt"); BufferedReader reader=new BufferedReader(new FileReader(file)); String oldContent=""; String newContent=""; while((newContent=reader.readLine())!=null) { //System.out.println("印出讀到第幾行"); oldContent+=newContent; } 資料的話是長得這樣: http://mis.ccu.edu.tw/~dink/data.txt p.s.不建議用瀏覽器直接開,可能會太大讓瀏覽器呈現當掉的情況,下載下來可能會好一點 ※ 編輯: sioo 來自: 59.104.92.204 (05/29 00:10) ※ 編輯: sioo 來自: 59.104.92.204 (05/29 00:16)

05/29 00:23, , 9F
最重要的 split 沒寫, 問題不在讀檔, 根本就不應該這麼做
05/29 00:23, 9F
String[] array=oldContent.split("@@@"); //Excel裡面的x,y座標 int x=0,y=1; for(int i=0;i<array.length;i++) { if(array[i].equals("*****")) { //*****表示一筆資料結束,就換行,column從第0個開始 y++; x=0; } else { //將array[i]的內容寫到Excel中的(x,y)中,並換到下一個column sheet.addCell(new Label(x,y,array[i])); x++; } } ※ 編輯: sioo 來自: 59.104.92.204 (05/29 00:29) ※ 編輯: sioo 來自: 59.104.92.204 (05/29 00:35)
文章代碼(AID): #18FMrDCX (java)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 3 篇):
6
9
文章代碼(AID): #18FMrDCX (java)