呼!
目前来看Java I/O对编码提供的方案还是太局限了。
File sourceFile=new File(sorceFilePath);
//不在这里进行制定编码,读文件就会乱码
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(new FileInputStream(sourceFile),"gbk"));
String myFile="C:\\Users\\.....\\Desktop\\dowload.txt";
//这里的编码写不写无所谓,默认会打印中文字符
OutputStreamWriter outputStreamWriter=new OutputStreamWriter(new FileOutputStream(myFile),"utf-8");
int row=0;
String content;
while((content=bufferedReader.readLine()) != null) {
System.out.println(new String(content.getBytes(),"utf-8"));
System.out.println(outputStreamWriter.getEncoding());
System.out.println(content);
outputStreamWriter.write("第 "+row++ +" 行 : "+content);
}
bufferedReader.close();
outputStreamWriter.close();
能指定编码的输入输出流暂时就碰到这一对,InputStreamReader,outputStreamWriter,只要文件有中文,在指定输入流的时候就必须指定编码格式并且必须是gbk,一换成别的就会乱码。