io流

 1、io流所用的模式
  装饰模式decorator
 2、装饰模式的特点:
  有四个角色分别是通过用接口、本原、装饰、具体装饰,
  可以将装饰或本原注入到另一个装饰中,
  让相关装饰功能进行累积,得到一综合的新功能。
 3、io的通用特点?
  按方向分为输入流、输出流,输入流是文件到内存,
  输入流的通用方法是read(byte byte),read(char char),read(byte[] bytes)
  ,read(char[] chars),readLine()
  输出流是内存到文件,输出流的通用方法是print或write
  对于输出的高层缓存(BuffererWriter、BufferOuputStream、PrintWriter)流只有flush()或close()后才将信息写入到文件中。
  从文件读取内容,如果读的是字节/字符或字节数组/字符数组,循环结束的条件-1
  如果通过BufferReader读取字符串,结束条件是!=null
  要想得到高层流必须通过构造子将低层流注入到高层流中。
  要是从键盘读取信息必须判断最后输入的字符
 4、io流的分类:
  存储方式:
   字节流:传送是字节,只能通过专用工具才能打开。一般用于二进制文件如jpg、rm、mp3、xsl、db。  
   字符流:传送的是字符 ,一般用于文本,通过文本编辑器可以打开。
  处理层次:
   分为高层流及低层流,在实例化高层流时通过构造子将低层流注入高层流中
   产生高层流。
 5、字节流的体系:
  字节流
   体系结构
       InputStream
    FileInputStream
        FilterInputStream
       ObjectInputStream(可以进行对象序列化) BufferedInputStream(具有缓存)   DataInputSteam
   字节流的转化
    FileInputStream fis=new FileInputStream("c.txt");
    DataInputStream dis=new DataInputStream(fis);可以直接得到一个基本的数据类型,可直接读取int double float
    ObjectInputStream:可以将一个文件转化为一个对象,叫返序列化
    BufferedInputStream bis=new BufferedInputStream(fis);//在应用与硬盘之间提供缓存,
      当超过缓存的容量时才与应用层交换,减少了交互次数,提高了运行速度。
   处理
    1、读取一个字节
     int temp=bis.read();
     while(temp!=-1)
     {
      temp=bis.read();
     }
    2、读取一批字节
     byte[] bytes=new byte[1024*10];
     int result=bis.read(bytes);
     while(result!=-1)
     {
      result=bis.read(bytes);
     }
  输出字节流
   体系结构
       OutputStream
    FileOutputStream
          FilterOutputStream
       ObjectOutputStream BufferedOutputStream(具有缓存)   DataOutputSteam  PrintStream
   字节流的转化
    FileOutputStream fis=new FileOutputStream("c.txt");
    DataOutputStream dis=new DataOutputStream(fis);可以写一个基本的数据类型
    ObjectOutputStream:将一个对象写到文件中
    BufferedOutputStream bos=new BufferedOutputStream(fis);//在应用与硬盘之间提供缓存,
      当超过缓存的容量时才与应用层交换,减少了交互次数,提高了运行速度。
    PrintStream:属于字节流,可以打印字节,也可以打印字符,
         e.printStackTrace()及System.out都是其实例。
   处理
    1、写入一个字节
     int temp=System.in.read();
     bis.write(temp);
    2、读取一批字节     
     byte[] bytes=new byte[1024];
     int result=System.in.read(bytes);
     bos.write(bytes,0,result);
   序列化:将对象写入到文件中,通过读取文件可以将文件内容转化为对象。
  字符流
   输入字符结构
       Reader
    FileReader
        InputStreamReader(将字节流转化为字符流)
       BufferedReader  
   字节流的转化
    FileInputStream-->InputStreamReader-->BufferedReader
    System.in-->InputStreamReader-->BufferedReader
    FileReader-->BuffferedReader
   处理
    1、读取一个字节
     int temp=bis.read();
     while(temp!=-1)
     {
      temp=bis.read();
     }
    2、读取一批字节
     char[] chars=new char[1024*10];
     int result=bis.read(chars);
     while(result!=-1)
     {
      result=bis.read(chars);
     }
    3、读取一行信息
     BufferedReader br=new BufferdReader(new FileReader("c:/a.txt"));
     String temp=br.readLine();
     while(temp!=null)
     {
      temp=br.readLine(); 
     }
  输出字符流 
   体系结构
       Writer
    FileWriter
          OutputStreamWriter(将输出的字节流转化字符流)
       BufferedPrinter(具有缓存)   PrintWriter
   字节流的转化
    FileWriter-->BufferedPrinter
    FileWriter-->PrintWriter
    FileWriter-->BufferedPrinter-->PrintWriter
    System.out-->OutputStreamWriter-->PrintWriter-->BufferedWriter
    若要想将数据写入到文件,BufferedWriter及PrintWriter必须close或flush
   处理
    1、写入一个字节
     int temp=System.in.read();
     bis.write(temp);
    2、写入一批字节     
     char[] charss=new char[1024];
     int result=System.in.read(chars);
     bos.write(chars,0,result);
    3、写出一个字符串
     BufferedWriter bw=new BufferedWriter(new FileWriter("c:/a.txt"));
     bw.write("aaaaaaaaaaaaaa");
   序列化:将对象写入到文件中,通过读取文件可以将文件内容转化为对象。
PrintWriter、BufferedWriter、PrintStream的区别
 PrintWriter、BufferedWriter:属于字符流,若要保存必须close或flush
 PrintStream:属于字节流,可以打印字节也可以打印字符,e.printStackTrace及
  System.out.println()都是其实例,没有缓存不用关闭就可以保存。
File:流是对文件内容的处理,File是文件的整体处理,主要可以创建、删除、判断是否存在、
 是文件还是文件夹
 1、用递归遍历一个文件夹下的所有目录。
 2、什么是递归:
  a、自己调用自己
  2、必须有出口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值