IO流

java.io
功能分:输入流 i  输出流 o
内容形式:字符流  字节流

字节流
  输入流 InputStream  FileInputStream DataInputStream BufferedInputStream ObjectInputStream PrintStream
  输出流 OutputStream FileOutputStream DataOutputStream BufferedOutputStream ObjectOutputStream 
基础io操作:FileInputStream  FileOutputStream 
带缓冲区:BufferedInputStream BufferedOutputStream 
按顺序和内容格式: DataInputStream DataOutputStream 
序列化对象:ObjectInputStream ObjectOutputStream 

字符流:
  输入流:Reader  FileReader  BufferedReader InputStreamReader
  输出流:Writer  FileWriter  BufferedWriter InputStreamWriter PrintWriter

 基础io操作:FileReader  FileWriter  
 带缓冲区:BufferedReader BufferedWriter 
 转换:InputStreamReader InputStreamWriter 
格式化输出:PrintWriter

复制文件:输入流读文件,输出流写到另外一个地方
通常读取文本文件 防止乱码:
  先字节流
  转成字符流 -规定转换的格式
  字符流读
序列化:对象实现Serializable
        关联对象一定也要实现Serializable
 读写文件
  File  delete exists() createNewFile() getName getPath getAbsolutePath()
        isFile isDirectory() mkdir() mkdirs()

  功能分:读文件(输入流)  写文件(输出流)
  内容形式:字符流(16位unicode字符读写文件)  字节流(8位字节读写文件)
     字符流读写文本比较快
     字节流读写文不比较慢
    
     字符流只能读写文本
     字节流可以读文本,还可以读图片,读音频,视频


字节流:
   输入流 InputStream
     子类 FileInputStream
方式1:
  1建立通道
  InputStream is = new FileInputStream(要读的文件);
  2 获得流的有效字节数
  int len=is.available();
  3 创建一个字节数组 ,用来存流读出来的内容
  byte[] arr = new byte[len];
  4 从流中读内容
  is.read(arr);
  5 关闭流

方式2:
   1建立通道
    InputStream is = new FileInputStream(要读的文件);
   2 建立一个大小适中的数组
    byte[] arr = new byte[10];
   
   3 声明一个变量 记录每次都出的字节数
    int len =0;
   
   4 循环着读,当读出长度为-1时,结束循环
    while( (len=is.read(arr))!=-1)
    {
    }
   5 写循环体,把读出的内容累加到StringBuffer
       StringBuffer buf = new StringBuffer();
       while( (len=is.read(arr))!=-1)
       {
           buf.append(new String(arr,0,len));
       }
   6 打印输出 关闭流 

 输出流 OutputStream
       FileOutputStream
 写文件:
   1 FileOutputStream out=new FileOutputStream(要写入数据的文件路径和名字);
   String xx="sdfsdfsdf";
   byte[] arr = xx.getBytes();
   2 out.write(byte[] arr);
  
   3 流关闭


 字符流
   读文件  Reader
  FileReader
   1建立通道
    Reader is = new FileReader(要读的文件);
   2 建立一个大小适中的数组
    char[] arr = new char[10];
   
   3 声明一个变量 记录每次都出的字节数
    int len =0;
   
   4 循环着读,当读出长度为-1时,结束循环
    while( (len=is.read(arr))!=-1)
    {
    }
   5 写循环体,把读出的内容累加到StringBuffer
       StringBuffer buf = new StringBuffer();
       while( (len=is.read(arr))!=-1)
       {
           buf.append(char[]);
       }
   6 打印输出 关闭流 

 写文件 Writer
  1 FileWriter out=new FileWriter(要写入数据的文件路径和名字);
   String xx="sdfsdfsdf";
 
   2 out.write(xx);
  
   3 流关闭

处理流:都不能直接去读写文件,基于四个基础流  
    带缓冲区的流
      BufferedInputStream 
      BufferedOutputStream 
      BufferedReader
       BufferedWriter
 
    带缓冲区写的流,关闭前要清空

转换流:
  InputStreamReader    
  OutputStreamWriter

把字节流转换成字符流

  按类型,顺序读写的流:
   DataInputStream
   DataOutputStream
  
格式化输出
   printWriter
   printStream

序列化流:ObjectOutputStream  ObjectInputStream  

序列化过程
  1 对象实现接口Serializable
  2 建立字节流 FileOutputStream
  3 把基础字节流包装成 ObjectOutputStream  new ObjectOutputStream( new FileOutputStream(要写的文件));
  4 用ObjectOutputStream.writeObject(对象);
  5 关闭流

反序列化
   1 对象实现接口Serializable
   2 建立字节流 FileInputStream
   3 把基础字节流包装成 ObjectInputStream  new ObjectInputStream( new FileInputStream(要读的文件));
   4 用ObjectInputStream.readObject();
   5 关闭流
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值