IO的总结

  1. 字节流总结
/*
         * 1. IO流分为字节流和字符流
         * 字节流   InPutStream(字节输入流) OutPutStream(字节输出流)
         * 字符流   Reader(字符输入流)  Writer(字符输出流)
         * 带Buffered的效率快的原因是 可以一次读很多个字节 先放到内存中 不向磁盘写入 凑够缓冲区大小 一次性写入磁盘 减少磁盘操作数
         */

        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("b.txt"));
        bos.write("hello".getBytes());  // 向文本文档里写入 文本
        bos.close();
        System.out.println("操作完成");

        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("a.txt"));
        byte[] b = new byte[1024];
        int len=-1;
        while((len=bis.read(b))!=-1)
        {
            //System.out.println((char)len);  读出文本内容到控制台
            bos.write(b,0,len);  //一次读多个字节  复制文件
        }
        bis.close();

2.
字符流总结

public static void main(String[] args) throws IOException, FileNotFoundException {

  BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("demo01_utf8"),"utf-8"));
          bw.write("hello,您好啊");
          bw.newLine();
          bw.write("how are you ,你们好吗");
          bw.close();
          //因为默认是 GBK的编码 如果改成UFT-8会出现乱码问题  编码格式要一样

  BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("demo01_utf8"),"utf-8"));
          String line = null;
          while((line=br.readLine())!=null){
                System.out.println(line);           
          }
          br.close();
    }

3.阶段小结(”流总结 :”)

《1》 “字节流 :”
InputStream : 字节输入流
|– FileInputStream
|– BufferedInputStream
OutputStream : 字节输出流
|– FileOutputStream
|– BufferedOutputStream

《2》 “字符流 :”
Reader : 字符输入流
|– InputStreamReader : InputStream + 任意编码表
|– FileReader : InputStreamReader + 默认编码表 (便捷类) 字节流 + 编码表
|– BufferedReader
Writer : 字符输出流
|– OutputStreamWriter : OutputStream + 任意编码表
|– FileWriter : OutputStreamWriter + 默认编码表 (便捷类)字节流 + 编码表
|– BufferedWriter

《3》” 如何选择使用那种流呢?”

“问题1 : 读取字节数据还是字符数据?”
字节 : BufferedInputStream / BufferedOutputStream
字符 : BufferedReader / BufferedWriter

“问题2 : 是读还是写?”
读 : BufferedInputStream / BufferedReader
写 : BufferedOutputStream / BufferedWriter

“问题3 : 是否需要高效缓冲呢 ?” 当然要.
是 : 就用对应体系的缓冲流包起来. 缓冲流就是用来装饰其它流的.所以,要加缓冲,就用缓冲流包装其它流.

“问题4 : 是否需要指定编码表?”
需要 , 转换流. OutputStreamWriter & InputStreamReader
不需要 , 便捷流. FileWriter & FileReader

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值