Discussion:
[J2SE] 處理大量中文字串
(时间太久无法回复)
用BBS修電腦~Orz
2007-03-04 17:35:25 UTC
Permalink
我現在要做一個程式
必須要讀取.txt檔案 一個檔案約150多MB(我沒豪洨/ \我也很難過><)
內容是
把程式裡面相關文章斷詞塞選出來 存入資料庫(大概結果會超過2萬筆資料)

想請問 我知道我不該把資料通通存入String
但是如果真要這樣做可行嗎?(我嘗試過會ERROR)
有辦法加大Catch讓String讀入150多MB嗎(._.?)

請問有什麼function能一次 慢慢讓軟體去處理這麼大的檔案呢?

另外問一下ArrayList有長度限制嗎?

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 221.169.38.103
2007-03-04 17:39:17 UTC
Permalink
咦...用檔案串流邊讀邊存,不行嗎?....

或是把.txt 轉成excel 或是 access 再用資料庫的存取方法轉存?

txt 把各欄位加上識別 例如「,」 之類的,就能轉excel 了。

如果不行,也別怪我,因為我沒試過...只試過反過來...哈哈!! (逃....)


我承認我是來亂的....= =

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 222.250.36.208
痞子軍團團長
2007-03-04 22:55:44 UTC
Permalink
※ 引述《slalala (用BBS修電腦~Orz)》之銘言:
: 我現在要做一個程式
: 必須要讀取.txt檔案 一個檔案約150多MB(我沒豪洨/ \我也很難過><)
: 內容是
: 把程式裡面相關文章斷詞塞選出來 存入資料庫(大概結果會超過2萬筆資料)

斷詞阿... [遠目]
可以問一下 java 有哪些(中文)斷詞 library 嗎?
(目前只有聽說 PATTerm 這個... 而且用法不明 Orz)

: 想請問 我知道我不該把資料通通存入String
: 但是如果真要這樣做可行嗎?(我嘗試過會ERROR)
: 有辦法加大Catch讓String讀入150多MB嗎(._.?)

不是加大 cache,而是增加 JVM 的記憶體大小
指令是執行時候下

java -xmx

不過... 這個方法應該是治標不治本

一般的文章應該是有段落的
所以用 BufferedReader.readLine()
然後依照你文件的格式,去拼出一個段落,把這個段落另存檔案
最後再分別 load 這些檔案進去斷詞
這樣應該比較好(不過沒 try 過,純嘴砲 [逃])

: 請問有什麼function能一次 慢慢讓軟體去處理這麼大的檔案呢?
: 另外問一下ArrayList有長度限制嗎?



--
 侃侃長論鮮窒礙  首頁:http://www.psmonkey.idv.tw
 眾目睽睽無心顫  Blog:http://ps-think.blogspot.com
 煢居少聊常人事 
 殺頭容易告白難  歡迎參觀 Java 版(@ptt.cc)精華區 \囧/

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.195.84
Willie Liao
2007-03-04 23:45:07 UTC
Permalink
※ 引述《slalala (用BBS修電腦~Orz)》之銘言:
: 我現在要做一個程式
: 必須要讀取.txt檔案 一個檔案約150多MB(我沒豪洨/ \我也很難過><)
: 內容是
: 把程式裡面相關文章斷詞塞選出來 存入資料庫(大概結果會超過2萬筆資料)
: 想請問 我知道我不該把資料通通存入String
: 但是如果真要這樣做可行嗎?(我嘗試過會ERROR)
: 有辦法加大Catch讓String讀入150多MB嗎(._.?)
: 請問有什麼function能一次 慢慢讓軟體去處理這麼大的檔案呢?

剛剛P大有說過了,就是用STRINGBUFFER和加大JVM 的記憶體

: 另外問一下ArrayList有長度限制嗎?

理論上ARRAYLIST是用INT來表示大小和INDEX的,所以最大就是
INTEGER.MAX_VALUE
不過在您真的塞這麼多東西之前,MEMORY早就用完了XD

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 68.49.28.120
用BBS修電腦~Orz
2007-03-05 08:26:12 UTC
Permalink
其實我在寫的是 JSP ﹨(╯▽╰)∕

http://ckipsvr.iis.sinica.edu.tw/
我是用這個來斷詞...
把一整篇文章關鍵字讀出來另存到DB裡面
※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: ※ 引述《slalala (用BBS修電腦~Orz)》之銘言:
: : 我現在要做一個程式
: : 必須要讀取.txt檔案 一個檔案約150多MB(我沒豪洨/ \我也很難過><)
: : 內容是
: : 把程式裡面相關文章斷詞塞選出來 存入資料庫(大概結果會超過2萬筆資料)
: 斷詞阿... [遠目]
: 可以問一下 java 有哪些(中文)斷詞 library 嗎?
: (目前只有聽說 PATTerm 這個... 而且用法不明 Orz)
: : 想請問 我知道我不該把資料通通存入String
: : 但是如果真要這樣做可行嗎?(我嘗試過會ERROR)
: : 有辦法加大Catch讓String讀入150多MB嗎(._.?)
: 不是加大 cache,而是增加 JVM 的記憶體大小
: 指令是執行時候下
: java -xmx
: 不過... 這個方法應該是治標不治本
: 一般的文章應該是有段落的
: 所以用 BufferedReader.readLine()
這 對我來說好高難度~
基本上我是用人家寫好的JAVA BEAN來RUN
我現在是懷疑BEAN文章有度限制?還是從BEAN讀入讀出 有長度限制?
因為丟到BEAN的是String 取出的部份用arraylist

我以我才在想arraylist有長度限制嗎/ \


宣告的部分:
private ArrayList<String> sentences=new ArrayList<String>();

取出的部分:
public ArrayList getResult() {
return this.sentences;
}



: 然後依照你文件的格式,去拼出一個段落,把這個段落另存檔案
: 最後再分別 load 這些檔案進去斷詞
: 這樣應該比較好(不過沒 try 過,純嘴砲 [逃])
: : 請問有什麼function能一次 慢慢讓軟體去處理這麼大的檔案呢?
: : 另外問一下ArrayList有長度限制嗎?

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 221.169.38.103

Loading...