请问我用OutputStreamWriter转换流输出后的文件内容为啥是空白?

 
package com.atguigu.java;

import org.junit.Test;

import java.io.*;


public class InputStreamReaderTest {

   @Test
    public void test2(){
        //造文件、造流
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            fis = new FileInputStream("srcTest.txt");
            fos = new FileOutputStream("destTest-gbk.txt");

            InputStreamReader isr = new InputStreamReader(fis,"utf-8");
            OutputStreamWriter osw = new OutputStreamWriter(fos,"gbk");

            //读写的过程
            char[] cbuf = new char[20];
            int len;
            while ((len = isr.read(cbuf)) != -1){
                
//                String s =new String(cbuf,0,len);
//                System.out.print(s);           //这样测试了一下,控制台上是可以打印出来的
                

               osw.write(cbuf,0,len);  //就这,莫名其妙不能写入到,好气
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //关闭资源
            try {
                if(fis != null)
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if(fos != null)
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


    }
}

jdk-8.0 代码如上,想将srcTest.txt文件里的内容输出到destTest-gbk.txt里,并将原来的utf-8编码格式转换为gbk。 在读取文件后测试了一下能将原文件的内容打印到控制台,但是生成的destTest-gbk文件里空空如也...连乱码也没有... 不晓得我是哪一步出错了。

char[] cbuf = new char[20];改成byte[]

在循环外面加osw.flush();试试

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y