J2ME讀取各種格式的文本文件
- 在J2ME中讀取各種格式的文本文件 ??
- 在J2ME開發(fā)過程中,我們經常會把一個文字信息保存在txt格式的文本文件中做為資源.這樣便于修改和管理.那么讀取它們對于一些剛接觸j2me的朋友會有些困難.前幾天研究了下,看了一些兄弟的文章和代碼,總結出 3 種方法分別讀取Unicode,UTF- 8 ,Unicode?big?endian格式的文件...本文沒考慮讀取的效率問題. ??
- 這三種方法都能讀取中文和英文字符.用來存放的數組長度視文本長度而定.... ??
- 另外還有一些只能讀取英文字符的方法就不列舉出來了. ??
- 一,讀取Unicode格式 ??
- ? private ?String?read_Uni(String?resource) ??
- ?{ ??
- ? byte ?word_uni[]= new ? byte [ 1024 ]; ??
- ?String?strReturn= "" ; ??
- ?InputStream?is; ??
- ? try ??
- ?{ ??
- ?is=getClass().getResourceAsStream(resource); ??
- ?is.read(word_uni); ??
- ?is.close(); ??
- ?StringBuffer?stringbuffer?=? new ?StringBuffer( "" ); ??
- ? for ?( int ?j?=? 0 ;?j?<?word_uni.length;?) ??
- ?{ ??
- ? int ?k?=?word_uni[j++];? //注意在這個地方進行了碼制的轉換 ??
- ? if ?(k?<? 0 ) ??
- ?k?+=? 256 ; ??
- ? int ?l?=?word_uni[j++]; ??
- ? if ?(l?<? 0 ) ??
- ?l?+=? 256 ; ??
- ? char ?c?=?( char )?(k?+?(l?<<? 8 ));? //把高位和低位數組裝起來 ??
- ?stringbuffer.append(c); ??
- ?} ??
- ?strReturn=stringbuffer.toString(); ??
- ?} ??
- ? catch (IOException?e) ??
- ?{ ??
- ?e.printStackTrace(); ??
- ?} ??
- ? finally ??
- ?{ ??
- ?is= null ; ??
- ?} ??
- ? return ?strReturn; ??
- ?} ??
- 二,讀取UTF- 8 格式 ??
- ? public ?String?read_UTF(String?name) ??
- ?{ ??
- ?String?strReturn?=? "" ; ??
- ?InputStream?in?=? null ; ??
- ? byte []?word_utf=? new ? byte [ 1024 ]; ??
- ? try ??
- ?{ ??
- ?in?=?getClass().getResourceAsStream(name); ??
- ?in.read(word_utf); ??
- ?in.close(); ??
- ?strReturn= new ?String(word_utf, "UTF-8" ); ??
- ?} ??
- ? catch (Exception?e) ??
- ?{ ??
- ?System.out.println( "readUTF?Error:" +e.toString()); ??
- ?} ??
- ? finally ??
- ?{ ??
- ?in?=? null ; ??
- ?} ??
- ? return ?strReturn; ??
- ?} ??
- 三,讀取Unicode?big?endian格式 ??
- 讀取Unicode?big?endian格式時,采用readChar()方法讀取,所以存放時使用 char 數組存放. ??
- 注意:在文本的末尾加上 '$' 表示文本的結束. ??
- 另外代碼第 10 行dis.skip( 2 )是略過文件頭 2 個字符,如果用microsoft?notepad保存的一定存在這兩個頭字符. ??
- 當然,可以使用UltraEdit可以先刪掉這兩個頭字符,然后使用新建文件,復制粘貼,保存為其它格式.這樣兩個頭字符就沒了.. ??
- ? private ?String?read_Uni_b_e(String?resource) ??
- ?{ ??
- ? char ?word_uni_b_e[]= new ? char [ 1024 ]; ??
- ?String?strReturn= "" ; ??
- ?DataInputStream?dis; ??
- ? try ??
- ?{ ??
- ?dis= new ?DataInputStream(getClass().getResourceAsStream(resource)); ??
- ? int ?counter= 0 ; ??
- ?dis.skip( 2 ); ??
- ? char ?temp; ??
- ? while ( true ) ??
- ?{ ??
- ?temp=dis.readChar(); ??
- ? if (temp== '$' ) ??
- ? break ; ??
- ?word_uni_b_e[counter++]=temp; ??
- ?} ??
- ?dis.close(); ??
- ?strReturn=String.valueOf(word_uni_b_e, 0 ,counter); ??
- ?} ??
- ? catch (Exception?e) ??
- ?{ ??
- ?System.out.println( "read_Uni_b_e?error!" +e.getMessage()); ??
- ?} ??
- ? finally ??
- ?{ ??
- ?dis= null ; ??
- ?} ??
- ? return ?strReturn; ??
- ?}?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
