为啥我新建一个txt文件在里面写上些字后用这个方法复制出来的文件是乱码呢?
为啥我新建一个txt文件在里面写上些字后用这个方法复制出来的文件是乱码呢?
为啥我新建一个txt文件在里面写上些字后用这个方法复制出来的文件是乱码呢?
2016-12-17
你新建的文本文件window默认是ANSI编码,而ANSI编码就代表GBK编码,java是双字节编码,即utf-16be,先检查你建的项目是不是GBK或utf-16be编码,再检查写入文件时的字节或字符流是否指定为该编码方法!可参照以下代码:
public class BufferReaderWriter {
public static void main(String[] args) throws IOException {
// 读操作
BufferedReader br=new BufferedReader(
new InputStreamReader(
new FileInputStream("C:\\Program Files\\Java\\workspace\\06IO流 \\src\\sl0007_bufferreaderwriter\\imooc-gbk.txt"),"gbk"));
//写操作
BufferedWriter bw=new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("C:\\Program Files\\Java\\workspace\\06IO流\\src\\sl0007_bufferreaderwriter\\imooc-gbk2.txt",true),"utf-16be"));
String line2;
while((line2=br.readLine())!=null){
System.out.println(line2);
bw.write(line2);
//单独写出换行操作
bw.newLine();
bw.flush();
}
br.close();
pw.close();
}
}
举报