进行IO操作时,我在网上查到一个方法
代码格式没有错误,最后复制的txt文件英文没问题,中文却有乱码
代码如下
@Test
public void testBufferReaderWriter(){
BufferedReader br = null;
BufferedWriter bw = null;
try {
//1.创建文件和相应的流
br = new BufferedReader(
new FileReader(new File("a.txt")));
bw = new BufferedWriter(
new FileWriter(new File("c.txt")));
//a.txt为读取的文件 c.txt为写出的复制文件
//2.读写操作
char[] cbuf = new char[1024];
int len;
while ((len = br.read(cbuf))!= -1) {
bw.write(cbuf,0,len);
//bw.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//3.关闭资源
if(bw != null){
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(br != null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
这是一个简单的测试文件,复制结束后中文变为了几个"???"
百思不得其解,代码明明没错。然后无意间瞥到idea打开的a.txt页面右下角显示的编码是GBK,手动改为UFT-8后复制就成功了
总结:确定方法没写错的时候排查下要复制文件的编码
这里还有如何在txt里改编码的方案
百度知道