關于控制臺輸出的問題~~~
package?com.imooc.IOStreamReaderWriter;
import?java.io.FileInputStream;
import?java.io.FileOutputStream;
import?java.io.IOException;
import?java.io.InputStreamReader;
import?java.io.OutputStream;
import?java.io.OutputStreamWriter;
public?class?IsrAndOswDemo?{
public?static?void?main(String[]?args)?throws?IOException?{
FileInputStream?in?=?new?FileInputStream(
"H:\\Users\\MeRos\\Workspaces\\Projects\\測試文本文件(utf-8)\\src\\測試文件(utf-8).txt");
InputStreamReader?isr?=?new?InputStreamReader(in);?//?默認的項目編碼
FileOutputStream?out?=?new?FileOutputStream("字符流文本.txt");
OutputStreamWriter?osw?=?new?OutputStreamWriter(out,"gbk");
/*
?*?int?c?;?while((c?=?isr.read())?!=?-1){?System.out.print((char)?c);?}
?*/
char[]?buffer?=?new?char[8?*?1024];
int?c;
//?批量讀取,放入buffer字符數組,從第0個位置開始,最多放buffer.length個
//?返回的是讀到的字符的個數
while?((c?=?isr.read(buffer,?0,?buffer.length))?!=?-1)?{
String?s?=?new?String(buffer,?0,?c);
System.out.print(s);
}
in.close();
out.close();
isr.close();
osw.close();
}
}


我的文件是utf-8 的(存在新建的項目中也是utf-8),測試項目是gbk的,可是輸出控制臺之后怎么不會發生亂碼呢.????
2015-09-23
因為你while循環里將字符數組轉換為String類型時,會自動添上項目默認編碼(你的是utf-8),只要文本文件的編碼和你輸入流的編碼一樣,控制臺應該就會正確輸出吧