推 qrtt1:你有什麼理由需要全部累加!? 05/28 22:39
這個程式是把txt檔先全部讀出來,再根據我設定的符號去做split
存成文字陣列,再把文字陣列寫到excel裡面
所以我把內容全部累加起來.....請問是否有比較好的方法呢? 謝拉
※ 編輯: sioo 來自: 59.104.92.204 (05/28 22:43)
推 qrtt1:如果你的split不會跨多行怎麼不單行的做呢? 它會跨多行嗎? 05/28 22:46
→ sioo:對阿,會跨到多行耶,沒辦法預測會有幾行 05/28 22:47
推 Jichang:我猜應該是有寫錯.弄成無限回圈.否則 10mb 應該是很快. 05/28 22:57
→ sioo:資料量比較少時,程式是跑得完的,所以應該不是無窮loop阿 05/28 23:00
推 MOONRAKER:那表示你程式裡有很多「虛功」。 05/28 23:11
虛功???
好吧,剛寫了個System.out這東西來看程式跑的狀況,
大概一秒鐘跑10行左右吧,txt檔的資料預估50000行以上,
光是把txt檔讀出來就要可能要跑一個半鐘頭....
好慢....
※ 編輯: sioo 來自: 59.104.92.204 (05/28 23:19)
推 qrtt1:一秒10行太可怕了, 你一行是很長嗎? 貼上你的演算法吧!!! 05/28 23:32
→ iensue:你的newContent是String嗎? 試試用StringBuilder 05/28 23:50
好像也沒什麼演算法
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)
推 qrtt1:最重要的 split 沒寫, 問題不在讀檔, 根本就不應該這麼做 05/29 00:23
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)