?
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
????????}
????}
}