JavaSE总结-IO字符流总结

在上一篇博客中总结了字节输入流和字节输出流的用法以及例子,遇到并解决的问题:
1.回顾了一下StringBuffer
2.回顾了String中的toString方法,返回的是String对象的本身

3.关于字节流读取和写入中文的原理是通过getbytes方法可以把字符进行编码成为字节。

String str = "今天天气很好!";
        byte[] buff = str.getBytes();
         //把字符串转换为 字节数组

字符输入流
字符输入流也是以二进制的的形式在内存中进行存储的,但是字符流具有自动将二进制数据进行编码或者解码成为一个字符
字符流 = 字节流 +编码/解码

———Reader

———FileReader
关于使用方法和字节流的使用方法大同小异,区别就在接口和实现类不同
使用步骤:
1.找到目标文件
2.建立数据传输通道
3.读取数据
4.关闭资源

package 博客代码;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class CharIO {
/**
 * 
 * @param args
 * 字符输入流
 * @throws IOException 
 */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        //1.找到目标文件
        File file = new File("E:\\Java\\IO测试文件夹\\user.txt");
        //建立通道
        FileReader fileReader = new FileReader(file);

        //读取字符数据
        char[] c = new char[1024];
        int len;
        while ((len = fileReader.read(c)) != -1) {
            String string = new String(c);
            System.out.println(string);
        }
        fileReader.close();
    }

}

输出结果:hello world!123
这就是一个字符输入流的基础用法,至于字符输出流和缓冲字符输入流和输出流,也和字节流差不多,这里就不在重复写了,至于抛出的异常,是一个找不到文件的异常,用他的父类IOException来代替。

流中的异常处理
在java中异常处理有两种方式,抛出异常和解决异常。
在这里的抛出异常是:throws 异常

解决异常:try{
            //可能产生异常的代码
}catch(Exception e){
    //处理异常的主体
}finally{
    //需要必须执行的语句
}

杂项总结

对于字符流中的异常,凡是关闭输出流和关闭输入流都有可能出现异常,所以都要用进行trycatch来进行处理

总结:1.throw new RuntimeException:对处理异常进行包装,包装成为运行时异常,处理方式更简单,不用每次都去抛出异常
2.在流中,关闭流的顺序是先关闭后进的,再关闭先进的
3.关于在缓冲字符中的newLine()和readLined()
newLine() 换行的意思,执行的是(\r\n)
readLine() 读取一整个行数,执行的是读取一行

package 博客代码;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class CharIO {
/**
 * 
 * @param args
 * 字符输入流
 * @throws IOException 
 */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        //1.找到目标文件
        File file = new File("");

        //2.建立数据传输的通道
        FileWriter writer = new FileWriter(file);

        //3.创建缓冲输出字符流对象
        BufferedWriter buffer = new BufferedWriter(writer);

        //4.写入数据
        buffer.newLine();  //这就是在文件中 输出一个 \r\n, 不是单单的一个\n

        //让文件换行
        buffer.write("\r\n哈哈哈哈");

        //立刻写入到磁盘
        buffer.flush();

        //5.关闭资源
        buffer.close();
    }

}

总结:对于字符流输入输出掌握的还不错,对杂项和不足的地方进行了一个总结,遗留下来的问题基本得到解决。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值