java讀取中文文件
?
java中讀取中文文件經(jīng)常出現(xiàn)亂碼,是因?yàn)閖ava編碼的問(wèn)題,以下是一個(gè)簡(jiǎn)單的類,實(shí)現(xiàn)讀取中文。
? 在用inputstream讀取的時(shí)候,最好是一次讀取多個(gè)字節(jié),這樣節(jié)io操作,提高速度。
package
?wh;
import ?java.io.BufferedReader;
import ?java.io.ByteArrayOutputStream;
import ?java.io.File;
import ?java.io.FileInputStream;
import ?java.io.FileReader;
import ?java.io.FilterInputStream;
import ?java.io.InputStream;
public ? class ?Stream
{
???? public ? static ? void ?main(String[]?args)
????{
???????? try
????????{
????????????InputStream??r? = ? new ?FileInputStream?( " c:/a.txt " );
????????????ByteArrayOutputStream?byteout? = ? new ?ByteArrayOutputStream();
???????????? byte ?tmp?[]? = ? new ? byte [ 256 ];
???????????? byte ?context?[];
???????????? int ?i? = ? 0 ;
???????????? while ((i = r.read(tmp)) !=- 1 )
????????????{
????????????????byteout.write(tmp);
????????????}
????????????context? = ?byteout.toByteArray();
????????????String?str? = ? new ?String(context, " gb2312 " );
???????????? // 分隔行
????????????String?stra?[]? = ?str.split( " \n " );
???????????? for ( int ?n? = ? 0 ;n < stra.length;n ++ )
????????????{
????????????????System.out.println(stra[n] + " ++++ " );
????????????}
???????????? // System.out.println(str);
????????}? catch ?(Exception?e)
????????{
???????????? // ?TODO:?handle?exception
????????}
????}
}
import ?java.io.BufferedReader;
import ?java.io.ByteArrayOutputStream;
import ?java.io.File;
import ?java.io.FileInputStream;
import ?java.io.FileReader;
import ?java.io.FilterInputStream;
import ?java.io.InputStream;
public ? class ?Stream
{
???? public ? static ? void ?main(String[]?args)
????{
???????? try
????????{
????????????InputStream??r? = ? new ?FileInputStream?( " c:/a.txt " );
????????????ByteArrayOutputStream?byteout? = ? new ?ByteArrayOutputStream();
???????????? byte ?tmp?[]? = ? new ? byte [ 256 ];
???????????? byte ?context?[];
???????????? int ?i? = ? 0 ;
???????????? while ((i = r.read(tmp)) !=- 1 )
????????????{
????????????????byteout.write(tmp);
????????????}
????????????context? = ?byteout.toByteArray();
????????????String?str? = ? new ?String(context, " gb2312 " );
???????????? // 分隔行
????????????String?stra?[]? = ?str.split( " \n " );
???????????? for ( int ?n? = ? 0 ;n < stra.length;n ++ )
????????????{
????????????????System.out.println(stra[n] + " ++++ " );
????????????}
???????????? // System.out.println(str);
????????}? catch ?(Exception?e)
????????{
???????????? // ?TODO:?handle?exception
????????}
????}
}
posted on 2006-07-06 00:20 freebird 閱讀(1945) 評(píng)論(0) 編輯 收藏 所屬分類: java