IO流

流的概念:程序与数据来源之间的桥梁

流的分类:
  按数据方向分:输入流和输出流
    输入流:InputStream/Reader
    OutputStream/Writer
  按数据类型分:字节流和字符流
   字节流:InputStream/OutputStream
   字符流:Reader/Writer
  按流的功能分:节点流和处理流
   节点流用操作数据的来源。
   处理流用来封装节点流,从而给节点流增加一个功能,不能独立存在,在关闭流时如果使用了处理流,只需关闭最外层的流就可以了。
   区分节点流和处理流的小方法:
    看构造器,节点流参数为数据来源,而处理流参数为其他流。

选择流的思路:
  先考虑是输入流还是输出流,
  再考虑是字节流还是字符流,
  最后考虑是节点流还是处理流。
  
字符流:Reader和Writer所有字符流的父类型
  Java技术使用Unicode来表示字符串和字符,而且提供16位版本的流,以便用类似的方法处理字符。 
  如果构造了一个连接到流的Reader和Writer,转换规则会在使用缺省平台所定义的字节编码和Unicode之间切换。 
  
桥梁流:InputStreamReader和OutputStreamWriter(字节流转化成字符流的桥转换器)
  这两个类不是用于直接输入输出的,他是将字节流转换成字符流的桥转换器,并可以指定编解码方式。
   
逐行读写流:BufferedReader/BufferedWriter
  以上两个都是过滤流,需要用其他的节点流来作参数构造对象。
  BufferedReader的方法:readLine():String ,当他的返回值是null时,就表示读取完毕了。要注意,再写入时要注意写换行符,否则会出现阻塞。
  BufferedWriter的方法:newLine() ,这个方法会写出一个换行符。
  
管道流:线程交互的时候使用 (J2ME中不支持)
  PipedInputStream/PipedOutputStream
   传送输出流可以连接到传送输入流,以创建通信管道。传送输出流是管道的发送端。通常,数据由某个线程写入 PipedOutputStream 对象,并由其他线程从连接的 PipedInputStream 读取。
  注意:管道输出流和管道输入流需要对接。
   
数据流:DataInputStream和DataOutputStream
  通过流来读写Java基本类,注意DataInputStream和DataOutputStream的方法是成对的。 
  支持直接输出输入各种数据类型。
  注意:使用DataOutputStream/DataInputStream时,要注意写入顺序和读取顺序相同,否则会将没有分割写入的信息分割不正确而读取出错误的数据。
  
Properties类:针对属性文件(*.properties,内容是name=value,都是作为键值对出现)进行操作,在java.util包下  (J2ME中不支持)
  load(InputStream inStream) 
            从输入流中读取属性列表(键和元素对)。
           getProperty(String key) 
            用指定的键在此属性列表中搜索属性。

posted on 2013-07-04 19:23  笨'小孩  阅读(168)  评论(0编辑  收藏  举报

导航