IO流实现GBK写入文件然后转换UTF-8

 public static void main(String[] args) throws IOException {
        File file = new File("olol\\a.txt");//创建要写入的文件路径文件不存在IO流会自动创建,也可以直接创建
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(file), "GBK");//创建流使用GBK写入数据
        osw.write("窗前明月光,");
        osw.write("\r\n疑是地上霜.");
        osw.write("\r\n举头望明月,");
        osw.write("\r\n低头思故乡.");
        osw.flush();
        osw.close();
        InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GBK");//创建转换流进行读取使用GBk进行读取
        int temp = 0;//记录
        char[] c = new char[600];//采用数组进行保存,数组容量要大一点,优化可以采用集合存然后写入的时候遍历进行循环写入
        while ((temp = isr.read(c)) != -1) {//一次读取一个数组
            System.out.print(new String( c) );//用于查看控制台的数据
        }
        OutputStreamWriter osw2 = new OutputStreamWriter(new FileOutputStream("olol\\a.txt"), "UTF-8");//创建转换流使用utf进行写入在原来的文件上进行操作
        osw2.write(c);//采用直接写入数组

        osw2.flush();
        osw2.close();
        isr.close();
    }

问题;
不能同时读取和写入否则会把原来的数据进行覆盖写入空数据,必须先进行读取数据保存到容器中然后,在进行写入。

posted @ 2020-12-17 11:19  MikiKawai  阅读(405)  评论(0编辑  收藏  举报