黑马程序员---关于IO流的总结(原创)

原创 2013年12月04日 10:13:38
---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

//格式为:要读字符流的话:格式为BufferedReader bfr = new BufferedReader(new FileReader("xxxx.txt"))
                              //Buffered代表是否要高效读取,(即不是读一个存一个)
         //new FileReader():BufferedReader里面new什么就是读取什么文件
         //new FileReader里的参数:是读取目标

/*


&&&&&读:
//Buffered
  |--Reader:读取文本文件        BufferedReader (New FileReader("test.txt"))
             = new
  |--InputStream:读取字节流(图片、媒体文档)   BufferedInputStream(new FileInputStream("0.mp3"))

 

&&&&&写:
//Buffered

  |--Writer:读取文本文件            BufferedWriter (New FileWriter("test.txt"))
             = new
  |--OutputStream:读取字节流(图片、媒体文档)   BufferedOutputStream(new FileOutputStream("0.mp3"))


字符流转换成字节流:

        BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in)); 

字节流转换成字符流:

  BufferedWriter bfw = new BufferedWriter(new OutPutStreamWriter(System.out));




--------------第二部分--------------------------

知识点一: 四大等级结构

  java语言的i/o库提供了四大等级结构:InputStream,OutputStream,Reader,Writer四个系列的类。InputStream和OutputStream处理8位字节流数据, Reader和Writer处理16位的字符流数据。InputStream和Reader处理输入, OutputStream和Writer处理输出。大家一定要到J2SE文档中看看这四大等级结构的类继承体系。

  除了这四大系列类,i/o库还提供了少数的辅助类,其中比较重要的是InputStreamReader和OutputStreamWriter。InputStreamReader把InputStream适配为Reader, OutputStreamWriter把OutputStream适配为Writer;这样就架起了字节流处理类和字符流处理类间的桥梁。

  您使用i/o库时,只要按以上的规则,到相应的类体系中寻找您需要的类即可。

  知识点二: 适配功能

  java i/o库中的继承不是普通的继承;它的继承模式分为两种,其一就是Adapter模式(具体分析请参见<<java与模式>>一书) 。下面以InputStream类体系为例进行说明。

  InputStream有7个直接子类:ByteArrayInputStream,FileInputStream,PipedInputStream,StringBufferInputStream,FilterInputStream,ObjectInputStream和SequenceInputStream。前四个采用了Adapter模式,如FileInputStream部分代码如下:

  Public class FileInputStream extends InputStream

  {

  /* File Descriptor - handle to the open file */

  private FileDescriptor fd;

  public FileInputStream(FileDescriptor fdObj)

  {

  SecurityManager security = System.getSecurityManager();

  if (fdObj == null) {

  throw new NullPointerException();

  }

  if (security != null) {

  security.checkRead(fdObj);

  }

  fd = fdObj;

  }

  //其他代码

  }

  可见,FileInputStream继承了InputStream,组合了FileDescriptor,采用的是对象Adapter模式。我们学习i/o库时,主要应该掌握这四个对象Adapter模式的适配源: ByteArrayInputStream的适配源是Byte数组, FileInputStream的适配源是File对象, PipedInputStream的适配源是PipedOutputStream对象, StringBufferInputStream的适配源是String对象。其它三个系列类的学习方法与此相同。

  知识点三: Decorator功能

  InputStream的其它三个直接子类采用的是Decorator模式,<<java与模式>>中描述得比较清楚,其实我们不用管它采用什么模式,看看代码就明白了。 FilterInputStream部分代码如下:

  Public class FilterInputStream extends InputStream {

  /**

  * The input stream to be filtered.

  */

  protected InputStream in;

  protected FilterInputStream(InputStream in) {

  this.in = in;

  }

  //其它代码

  }

  看清楚没有? FilterInputStream继承了InputStream,也引用了InputStream,而它有四个子类,这就是所谓的Decorator模式。我们暂时可以不管为什么要用Decorator模式,但我们现在应该知道:因为InputStream还有其它的几个子类,所以我们可以将其它子类作为参数来构造FilterInputStream对象!这是我们开发时常用的功能,代码示例如下:

  {

  //从密钥文件中读密钥

  SecretKey key=null;

  ObjectInputStream keyFile=new ObjectInputStream(

  key=(SecretKey)keyFile.readObject();

  keyFile.close();

  }

  上面的代码中, ObjectInputStream也是InputStream的子类,也使用了Decorator功能,不过,就算你不懂也不想懂Decorator模式,只要记住本文给出的FilterInputStream 的两段代码即可。

  掌握了以上三点,相信我们已经能够很好的应用java i/o库。


*/---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

传智播客黑马程序员骗局真相揭秘

不知谣言从何而起,最近很多人在网上大肆宣称:传智播客和黑马程序员现在已经失去创立之初“良心办学”的初衷,只是在一味的黑心圈钱,黑马程序员骗局,企业封杀,等等。  传智播客运营10年,所经历的风雨...
  • itcast_cn
  • itcast_cn
  • 2016年07月28日 14:26
  • 6074

真实大起底:一名黑马程序员的就业经历

写在前面的话:首先说明一下,我是黑马程序员Java09期的一名毕业学员,目前就职于北京汇***宇科技有限公司,起步月薪:10000元/月(福利不计)。我大学所学的是计算机专业,2014年毕业后直接进入...
  • itcast_cn
  • itcast_cn
  • 2016年05月17日 11:44
  • 11144

黑马程序员—我的面试,我的学习,我的经历

文章来源:黑马程序员,黑马论坛        首先还是简单的做个自我介绍吧,我是黑马七期的一名很普通的学员,从黑马毕业有一个多月了,现在也上班了,薪水不高试用期5.6k转...
  • heima_28
  • heima_28
  • 2014年08月26日 15:14
  • 1806

黑马程序员_毕向东_Java基础视频教程第18天-13-IO流(拷贝文本文件).zip

  • 2016年04月07日 22:52
  • 20.62MB
  • 下载

黑马程序员_毕向东_Java基础视频教程第18天-09-IO流(文件的续写)

  • 2016年04月07日 22:45
  • 28.95MB
  • 下载

黑马程序员_毕向东_Java基础视频教程第18天-11-IO流(文本文件读取方式二).zip

  • 2016年04月07日 22:46
  • 21.4MB
  • 下载

黑马程序员_毕向东_Java基础视频教程第18天-14-IO流(拷贝文本文件图例).zip

  • 2016年04月07日 22:53
  • 7.6MB
  • 下载

黑马程序员_毕向东_Java基础视频教程第18天-12-IO流(文本文件读取练习).zip

  • 2016年04月07日 22:48
  • 4.02MB
  • 下载

黑马程序员 Java基础知识总结-IO流

IO流用来处理设备之间的数据传输,java对数据的操作是通过流的方式。
  • u013949711
  • u013949711
  • 2014年05月17日 17:26
  • 342

黑马程序员_IO流的一些总结

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、IO流的概述 IO流是Input Output流的简写,主要用来处理设备间的数据传输,ja...
  • u011449569
  • u011449569
  • 2015年10月31日 12:20
  • 212
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员---关于IO流的总结(原创)
举报原因:
原因补充:

(最多只允许输入30个字)