javaIO

1.原理与概念

一、概念
流:流动 、流向 从一端移动到另一端  源头与目的地
程序 与  文件|数组|网络连接|数据库  ,以程序为中心 
二、IO流分类
1、流向: 输入流与输出流
2、数据:字节流:二进制,可以一切文件 包括  纯文本 doc 音频、视频等等
字符流:文本文件,只能处理纯文本
3、功能:节点:包裹源头
处理:增强功能,提供性能
三、字符流与字节流 (重点) 与文件
1、字节流
    输入流:InputStream  read(byte[] b) 、read(byte[] b, int off, int len)  +close() 
FileInputStream()
    输出流:OutputStream write(byte[] b)  write(byte[] b, int off, int len)  +flush() +close()
FileOutputStream
2、字符流
   输入流:Reader read(char[] cbuf) read(char[] cbuf, int off, int len)  +close() 
FileReader()
   输出流:Writer  write(char[] cbuf) write(char[] cbuf, int off, int len) +flush() +close()
 write(String str, int off, int len) 
FileWriter()
四、操作
1、举例:搬家                 -->读取文件
   1)、关联房子              --->建立与文件联系
   2)、选择搬家           -->选择对应流
   3)、搬家 -->读取|写出
a)、卡车大小 --->数组大小
b)、运输 -->读取、写出
   4)、打发over -->释放资源
2、操作
1)建立联系
2)选择流
3)操作  数组大小+read 、write
4)释放资源

2.字节流

字节流:可以处理一切文件,包括二进制 音频、视频 、doc等
节点流:   InputStream FileInputStream
  OutputStream FileOutputStream


一、读取文件
1、建立联系   File对象 源头
2、选择流     文件输入流  InputStream FileInputStream
3、操作  : byte[] car =new byte[1024];  +read+读取大小
              输出
4、释放资源 :关闭
二、写出文件
1、建立联系   File对象  目的地
2、选择流     文件输出流  OutputStream FileOutputStream
3、操作  :  write() +flush
4、释放资源 :关闭
三、文件拷贝 程序为桥梁
1、建立联系   File对象   源头 目的地
2、选择流     
文件输入流  InputStream FileInputStream
 文件输出流  OutputStream FileOutputStream
3、操作  :  拷贝
byte[] flush =new byte[1024]; 
int len =0;
 while(-1!=(len=输入流.read(flush))){  
输出流.write(flush,0,len)
 }
             输出流.flush
4、释放资源 :关闭 两个流
四、文件夹拷贝
1、递归查找子孙级文件|文件夹
2、文件 复制(IO流复制)
     文件夹  创建
3、   A
      /    \
    a.txt  b
             |
            b.txt


         AA
          |
          A
        /    \
      a.txt b
              |
              b.txt  
4、不能将父目录拷贝到子目录中
    删除超长目录

3.字符流

字符流:只能处理 纯文本,全部为可见字符  .txt  .html
节点流 Reader FileReader
          Writer FileWriter
一、纯文本读取
1、建立联系
2、选择流 Reader FileReader
3、读取 char[] flush =new char[1024];
4、关闭
二、纯文本写出
1、建立联系
2、选择流   Writer FileWriter
3、读取 write(字符数组,0,长度)+flush
write(字符串)
append(字符|字符串)

4、关闭
4.处理流

处理流:增强功能、提供性能,节点流之上
一、缓冲流
1)、字节缓冲流
BufferedInputStream
BufferedOutputStream
2)、字符缓冲流
BufferedReader   readLine() 
BufferedWriter    newLine() 
二、转换流: 字节流 转为字符流   处理乱码(编码集、解码集)
1、编码与解码概念
 编码:  字符   ---编码字符集>二进制
 解码 : 二进制   --解码字符集->      字符
2、乱码:
1)编码与解码的字符集不统一
2)字节缺少,长度丢失
3、文件乱码 
InputStreamReader(字节输入流,"解码集")
OutputStreamWriter(字符输出流,"编码集")

5.其他流 
一、节点流
1、字节数组 字节 节点流 
    输入流:ByteArrayInputStream      read(byte[] b, int off, int len)  + close()
    输出流:ByteArrayOutputStream   write(byte[] b, int off, int len)  +toByteArray()   不要使用多态
二、处理流
1、基本类型+String  保留数据+类型
  输入流:DataInputStream    readXxx
  输出流:DataOutputStream  writeXxx
2、引用类型 (对象) 保留数据+类型
   反序列化 输入流:ObjectInputStream  readObject() 
   序列化  输出流:ObjectOutputStream  writeObject()
  注意:
1)、先序列化后反序列化;反序列化顺序必须与序列化一致
2)、不是所有的对象都可以序列化, java.io.Serializable
      不是所有的属性都需要序列化,transient
3、打印流 PrintStream  println() print()
4、三个常量 : System.in /out/err   System.setIn() setOut() setErr()

6.关闭方法

1、编写工具类,实现关闭功能
7.总结

一、步骤: 创建源 选择流 操作(读取|写出) 释放
二、流

节点流:离数据源|程序最近的流

1、 字节流:可以处理一切(纯文本、音频、视频等) 
1)、输入流 InputStream FileInputStream ByteArrayInputStream 操作:read(字节数组)  
a)、中间容器  byte[] flush=new byte[长度]  
b)、接收长度  int len =0; 
c)、循环读取 while(-1!=(len=流.read(flush))){}  
d)、操作:输出、拷贝 
2)、输出流 OutputStream FileOutputStream ByteArrayOutputStream 操作:write(字节数组,0,长度)  输出 
2、 字符流:只能处理纯文本 
1)、输入流:Reader FileReader 操作:read(字符数组) 
a)、中间容器  char[] flush=new char[长度] 
b)、接收长度  int len =0; 
c)、循环读取 while(-1!=(len=流.read(flush))){} 
d)、操作:输出、拷贝 
2)、输出流:Writer FileWriter 操作:write(字符数组,0,长度)  输出

处理流:装饰模式 提高性能增强功能

1、 转换流:解码与编码字符集问题 
1)、输入流:InputStreamReader à解码 
2)、输出流:OutputStreamWriter->编码 
2、缓冲流:提高性能    
1)、输入流:BufferedInputStream BufferedReader   
 2)、输出流:BufferedOutputStream BufferedWriter 


3、处理数据+类型 
1)、基本+字符串:必须存在才能读取 读取与写出顺序一致   
 a)、输入流:DataInputStream readXxx    
b)、输出流:DataOutputStream writeXxx 
2)、引用类型:Serializable transient    
a)、反序列化:ObjectInputStream readObject  
  b)、序列化:ObjectOutputStream writeObject 
4、打印流: PrintStream
  5、System.in out err  setIn setOut 以下流使用新增方法不能发生多态
 1、 ByteArrayOutputStream:  toByteArray() 
2、 BufferedReader: readLine() 
3、 BufferedWriter:newLine() 
4、 DataInputStream DataOutputStream 
5、 ObjectInputStream ObjectOutputStream 
6、 PrintStream


三、重点
 
四、操作
0、打印文件|目录
1、文件拷贝
2、关闭流方法
3、文件分割与合并(自学)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值