问答详情
源自:5-2 字符流之文件读写流

为啥我新建一个txt文件在里面写上些字后用这个方法复制出来的文件是乱码呢?

为啥我新建一个txt文件在里面写上些字后用这个方法复制出来的文件是乱码呢?

提问者:qq_noheartnoswe_04385033 2016-12-17 19:52

个回答

  • 春城乐
    2016-12-18 06:35:57

    你新建的文本文件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();

      }

    }