小弟个人对IO的字符流的看法

   今天回顾了下黑马毕老师的IO视频。 的确不错。 下面我将对IO的理解仔细理清下。 写个总结。

    java IO主要是处理数据方面的   硬盘 网络。内存。  IO可分为字节流和字符流。 然后细分下。还能分为输入流和输出流。

   这幅图很好的全是了IO基础的核心脉络



   这幅图说明。 字符流的2个基类就是reader wirter 所有的字符流读写都是继承了这2个基类。  当然。 他们是抽象的。

   先说说字符流

      Reader 是个抽象类。 里面有抽象方法read() 和Close() 所以子类都实现了这2个方法。

 先说说fileReader这个类, 这个类是继承了inputstreamreader类。  inputstreamReader是个转换流。字节流到字符流。这里先不套路。 inoutstreamReader又继承了Reader抽象类。 所以fileReader实现了Reader类中的read()和Cloase()方法, read()是读取数据, close()是为了关闭系统的资源。

 先看一段代码 

   

   这段代码。我读取一个文件为dome.txt

 dome.txt的数据就是"wz" 这2个字符, 运行后。 控制台结果显示为119 ,为啥会是119的数字。 因为b是int类型。 此时把w转为成int类型。 不信我可以转 成char看下。


  结果证明为w。  当然。 回顾下。 read方法。 从java jdk看出。 read返回是int类型的。    如果往后面读取如果读不到了。 就会返回个-1.代表数据读了。

  这样可以用代码证实下

   发现当我读取到最后一个数据的时候。返回-1了。 其实-1就是读取末尾的标志.read()方法有许多重载函数, 具体可以去查API 很简单的。

     是不是觉得filereadr很简单。 读取数据就完了。 不过如果按照上面写。 似乎不能满足我们太多的要求。 如果此时, 里面有100个字符。 你就打算去read()次吗? 这样肯定是错的, 但有的会提出。 可以用while循环判断啊。 判断是否为-1. 如果为-1就不读了。 这样的确能实现 。 但有点。 程序就是为了加快运算而出现的。 所以此时可以用到缓冲区。

    我把代码改了下 这时候用数组去读取。 其实数组就是缓冲区。 这时候读取就是读取一管数据。  这样就提高了效率。 结果我也答应了。 不过有一点。 声明缓冲区的大小最好是1024的倍数。毕老师是这样说的。 我也不知道为何。  这就是filereader。

  缓冲区讲过了。 但这是我们自己写的缓冲区。 其实java早已为我们准备好了缓冲区。 就如第一幅体系图中那样。buffreader。 bufferreader顾名思义就是缓冲字符.

  关于bufferreader可以去看下java Jdk文档 很详细 ,接下来我把代码改了下。 改成了用buffread去读取。发现会有个readline方法。 readline方法表示读取一行数据,

  读取到末尾不为null位置。 这样就把所有的数据都读取出来了。 缓冲区的出现是因为流存在而出现的。 为了r高效的读取而出现了缓冲区s

   其实bufferdreader类的read有3个重载方法 read()      read(char[])     ,read(char[],int off,int len);     代表什么意思去查java jdk文档就知道了。 很简单

 readline是读取一行。 读到末尾为null就返回不在读取了, 其实里面还有几个方法。 skip(int )跳过第一个字符去读.mark(int )标记当前的位置。这里就不一一解释了。


   inputstreamreader.        这个类的意思就是字节流转为字符流    这个类我牵扯到字节流。 我到后面会讲到

  fileWrite     把数据写到硬盘上

     如果一个已有的文件存在。 你想进行写入。 就需要这个类  这个类构造函数有几种。 fileWrite(filename); fileWrite(filename,boolean); fileWrite(File,boolean);

  fileWrite(File); 依次代表着文件。 文件和是否追加内容,文件对象和文件对象 是否追加内容 , 追加内容就是是否去覆盖原有的内容 如果不覆盖那么就追加内容

   fileWirte有个wirte()方法。 把数据写到文件中,   还有个append方法。 都是写入文件。 

  如果写入数据  就和读取数据一样。 不过写了要进行flush, 如果不刷新流。 那么数据无法写到文件中去。 就和tx文件一样。 写了不保存也无法添加到文件中去。

 close是关闭系统资源, 关闭资源后是无法续写内容。 

  字符流。 就差不多这样写了 其实写和读一样。 思想概念一样。 搞懂了读。 写也会了。



   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值