A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 634358131 中级黑马   /  2015-10-21 22:04  /  574 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

IO流(IO流概述及其分类)
概念
         IO流用来处理设备之间的数据传输
        Java对数据的操作是通过流的方式
        Java用于操作流的类都在IO包中
         流按流向分为两种:输入流,输出流。
         流按操作类型分为两种:
                字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的
                字符流 : 字符流只能操作纯字符数据,比较方便。
IO流常用父类
        字节流的抽象父类:
                InputStream
                OutputStream
        字符流的抽象父类:
                Reader
                Writer               
IO程序书写
        使用前,导入IO包中的类
        使用时,进行IO异常处理
        使用后,释放资源
IO流(BufferedInputStream和BufferOutputStream拷贝)
缓冲思想
        字节流一次读写一个数组的速度明显比一次读写一个字节的速度快很多,
        这是加入了数组这样的缓冲区效果,java本身在设计的时候,
        也考虑到了这样的设计思想(装饰设计模式后面讲解),所以提供了字节缓冲区流
BufferedInputStream
        BufferedInputStream内置了一个缓冲区(数组)
        从BufferedInputStream中读取一个字节时
        BufferedInputStream会一次性从文件中读取8192个, 存在缓冲区中, 返回给程序一个
        程序再次读取时, 就不用找文件了, 直接从缓冲区中获取
        直到缓冲区中所有的都被使用过, 才重新从文件中读取8192个
BufferedOutputStream
        BufferedOutputStream也内置了一个缓冲区(数组)
        程序向流中写出字节时, 不会直接写到文件, 先写到缓冲区中
        直到缓冲区写满, BufferedOutputStream才会把缓冲区中的数据一次性写到文件里
小数组的读写和带Buffered的读取哪个更快?
        定义小数组如果是8192个字节大小和Buffered比较的话
        定义小数组会略胜一筹,因为读和写操作的是同一个数组
        而Buffered操作的是两个数组
IO流(flush和close方法的区别)
flush()方法
        用来刷新缓冲区的,刷新后可以再次写出
close()方法
        用来关闭流释放资源的的,如果是带缓冲区的流对象的close()方法,不但会关闭流,还会再关闭流之前刷新缓冲区,关闭后不能再写出
IO流(字节流读写中文)
字节流读取中文的问题
        字节流在读中文的时候有可能会读到半个中文,造成乱码
字节流写出中文的问题
        字节流直接操作的字节,所以写出中文必须将字符串转换成字节数组
        写出回车换行 write("\r\n".getBytes())



评分

参与人数 4黑马币 +49 收起 理由
wenyu051 + 11 很给力!
任振铭 + 18 赞一个!
lu518627 + 10 很给力!
李振在黑马 + 10 很给力!

查看全部评分

3 个回复

倒序浏览
顶顶,加油把
回复 使用道具 举报
顶顶,加油吧
回复 使用道具 举报
66666666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马