字符流 转换流

字符流

字符输出流
一个字符一个字符的读
注意: 只能用来操作文本
Writer(所有字符输出流的父类 抽象类)

FileWriter
构造方法(绑定写入的路径)
文件
字符串
Mac系统下 一个中文字符3个字节 默认使用UTF-8的编码表(通用的编码表)
Windows系统下 一个中文字符2个字节 默认使用GBK的编码表(简体中文)

flush() — 刷新
字符输出流在写入文件的时候
需要调用刷新方法
建议 每次写入最好都刷新一次

字符输入流 写入

FileWriter fw = new FileWriter("/Users/lanou/Desktop/Test/haha.txt");
        fw.write(100);
        fw.flush();
        // 字符数组写入
        char[] c = {'d','p','y','g','s'};
        fw.write(c);
        fw.flush();

        fw.write(c, 1, 3);
        fw.flush();

        // 使用字符串直接写入
        fw.write("寥落古行宫\n宫花寂寞红\n白头宫女在\n闲坐说玄宗\n");
        fw.flush();
        fw.write("独坐幽篁里", 1, 2);    
        fw.close();

字符输入流
Reader(所有字符输入流的父类 抽象类)
写的时候可以直接写入字符串
读的时候 不能 直接读字符串
因为 字符串很难界定到哪里结束 不太容易判断一个字符串

FileReader fr = new FileReader("/Users/lanou/Desktop/Test/haha.txt");
        int len = 0;
        while ((len = fr.read()) != -1) {
            System.out.println((char)len);
        }

        char[] c = new char[1024];
        while ((len = fr.read(c)) != -1) {
            System.out.println(new String(c, 0, len));
        }
        fr.close();

转换流

OutPutStreamWriter — 字符流转向字节流
可以使用不同编码格式写入
会使用到FileOutputStream类

利用转换流写文件OutPutStreamWriter 默认UTF8写入

FileOutputStream fos = 
        new FileOutputStream("/Users/lanou/Desktop/Test/utf8.txt");
        OutputStreamWriter osw = new OutputStreamWriter(fos);
        osw.write("张三");
        osw.flush();
        osw.close();

注意: 这里只需要关闭外层的流(转换流) 也会把内层的流一起关闭 不用多关闭一次

InPutStreamReader — 字节流转向字符流
可以根据不同的编码格式读取
会使用到FileInputStream类

利用转换流读取文件 默认UTF8

FileInputStream fis = 
        new FileInputStream("/Users/lanou/Desktop/Test/utf8.txt");
        InputStreamReader isr = new InputStreamReader(fis);
        char[] c = new char[1024];
        int len = 0;
        while ((len = isr.read(c)) != -1) {
            System.out.println(new String(c, 0, len));
        }
        isr.close();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值