转换流

/*
        使用FileReader读取文件中的内容

        FileReader读取的时候,会使用idea平台默认编码方式去读取,而平台默认的编码是UTF-8
        但是我们要读取的文件采用的是gbk编码,此时编码不一致,就产生了乱码。


        我们可以想办法指定编码进行读写, 指定编码就可以使用转换流
        */
public class Demo01FileReader {
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("E:\\就业班代码\\file01.txt");
        while (fr.read() != -1) {
            System.out.println((char) fr.read());
        }
        fr.close();//释放资源
    }

}
 InputStreamReader 是转换流,是字节流向字符的桥梁。

        将文件中的内容读取到Java程序中。
        所有的数据在文件中保存的都是字节。
        如果读取到java程序中,那么我们看到的就是字符


        InputStreamReader的作用是可以指定编码进行读取。
        其实InputStreamReader本身也不具备读的功能,它的功能查询码表以及转码。


        构造方法:
        InputStreamReader​(InputStream in): 传递一个字节输入流。
         并且这个构造方法创建出来的对象会采用默认编码方式进行读取。
        InputStreamReader​(InputStream in, String charsetName):
        还需要传递一个字符串charsetName。这个表示采用哪个编码方式进行读取。

        使用步骤:
        1. 创建转换流对象,用来读取,并且指定一个编码方式。
        2. 调用方法,进行读取。
        3. 释放资源
        */
public class Demo02InputStreamReader {
    public static void main(String[] args) throws IOException {
        readGbk();

    }

    // InputStreamReader​(InputStream in, String charsetName)传递一个字节输入流:还需要传递一个字符串charsetName。这个表示采用哪个编码方式进行读取。
    public static void readUtf8() throws IOException {
        //创建InputStreamReader 对象,传递一个字节输入流
        //创建一个字节输入流对象,传参进转换流
        FileInputStream fis = new FileInputStream("file01.txt");
        InputStreamReader ir = new InputStreamReader(fis, "utf8");
        //调用方法,进行读取

     /*   while(ir.read()!=-1)//此处不用变量接收的话会丢失{你,今,早做发嘛
        {   int len=ir.read();//好你天上头了 空
            System.out.print((char) len);//字节码转换为字符
        }*/
        int len;
        while ((len = ir.read()) != -1) {
            System.out.print((char) len);
        }
    }
public class Demo03OutputStreanWriter {
    /* OutputStreamWriter也是转换流, 是字符通向字节的桥梁。
     OutputStreamWriter可以指定编码进行写入。

     构造方法:
     OutputStreamWriter​(OutputStream out): 使用默认的编码方式进行写入
     OutputStreamWriter​(OutputStream out, String charsetName): 指定编码方式进行写入。

     使用步骤:
             1. 创建一个OutputStreamWriter,并且指定一个编码方式
         2. 调用write方法,进行写入
         3. 释放资源

  */
    public static void main(String[] args) throws IOException {
        //向文件写入UTF-8编码的数据
        //1创建转换输出流对象OutputstreamWriter
        //创建输出流对象作为参数传入转换流
        FileOutputStream fos = new FileOutputStream("fiel01.txt");
        OutputStreamWriter osw = new OutputStreamWriter(fos, "utf8");
        //写入数据
        osw.write("中国");
        osw.flush();
        osw.write(22);
        osw.flush();

        osw.write(11);
        osw.flush();

        osw.close();
        method();
    }
    public static void method() throws IOException {
        FileOutputStream fos = new FileOutputStream("fiel01.txt");
        OutputStreamWriter osw = new OutputStreamWriter(fos, "gbk");
        //写入数据
        osw.write("中国");
        osw.flush();
        osw.write(22);
        osw.flush();

        osw.write(11);
        osw.flush();

        osw.close();

    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值