Java IO流概述

一、概念

流:流动 、流向 从一端移动到另一端  源头与目的地
程序 与  文件|数组|网络连接|数据库  ,以程序为中心 


二、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()

四、IO流结构图

IO流:

Java IO流概述_第1张图片

 

 

字符流:

Java IO流概述_第2张图片

 

 

字节流:

Java IO流概述_第3张图片

 

总结:

一、步骤: 创建源 选择流 操作(读取|写出)释放
二、流
 
节点流:离数据源|程序最近的流 处理流:装饰模式 提高性能增强功能  
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、文件分割与合并(自学)

你可能感兴趣的:(JavaSE)