java中读取中文文件经常出现乱码,是因为java编码的问题,以下是一个简单的类,实现读取中文。
在用inputstream读取的时候,最好是一次读取多个字节,这样节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
}
}
}