IO流
IO流
(杰我教育)
一 . 先用PowerDesigner给大家把大概的结构展示一下:
二. java流概述
1 什么是流
从操作系统层面和文件系统,数据保存相关的是所有语言都具备的一个基本功能,java专门开发了一个包:java.io.*;java流是Sun/oracle公司专门为文件操作,数据传输开发出来的一些类,但是取了个特别的名字,叫流(继承于unix->Linux),所有的打开的流都必须关闭,因为打开的流是很耗费资源的,并且很不安全。
流中的操作对象是指内存中当前操作的程序而言的,输入是指往程序中导入数据,输出是当前程序中的数据导出到外部,这个外部是指:内存中别的程序,内存中的缓存,硬盘,U盘,远程连接等,但是我们不管这些细节,直接导出就可以,由java底层处理
I:input:什么叫input输入流
这个是以当前内存中运行那一段程序为标准,从外部写入的数据叫输入。
O:output:什么叫output输出流:往外部写出的数据叫输出
2 流类架构图(常用的十六个流)
所有的的类都继承Closeable接口,用于关闭流。
Closeable:意思是需要程序员去手动关闭的程序。
所有的输出流在继承Closeable的同时,也都继承了Flushable,用于将缓存的数据强行刷入文件。
接口
Closeable,Flushable
抽象类
所有的数据都可以,一个字节字节的读:byte = 8bit
所有的文件都可以读(InputStream)(OutputStream)
纯文本文件的读写,是java为了国际化在1.1中引入的,因为只有纯文本文件才有编码的问题,只用上面的相对麻烦,一次读取一个字符
java用的Unicode这个2个字节16位表示一个字,字符(Reader)(Writer)
基础实现类,原始类,打开连接,读取数据
FileInputStream
FileOutputStream
FileReader
FileWriter
包装流,在原始的基础上进行强化
缓存,以加快速度,多次读,一次写,为什么?硬盘等物理设备,读比写要快.同时因为一次只能读8-16bit,所以我们开辟个缓冲区,读一片,然后一次写入
BufferedReader
BufferedWriter
BufferedInputStream
BufferedOutputStream
数据来源于内存
DataInputStream
DataOutputStream
ObjectInputStream
ObjectOutputStream
转换类:讲字节流转换成字符流
InputStreamReader
OutputStreamWriter
格式化输出
PrintWriter
PrintStream (标准输出类,默认把数据输出到控制台)
3 类的分类
原始流类
用于打开连接,里面不能传入一个流,而是一个具体的数据定位,是直接操作数据的.
四个原始流类:
FileInputStream
FileOutputStream
FileReader
FileWriter
包装类(包裹类)
在连接基础上进行操作,里面传入是一个流类,也就是一个类,对象,要用到多态,就是包装流,包装流不能独立存在,对原始流进行在加工处理的。
常用的十六个流
FileInputStream
FileOutputStream
FileReader
FileWriter
BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter
InputStreamReader
OutputStreamWriter
DataInputStream
DataOutputStream
ObjectInputStream
ObjectOutputStream
PrintWriter
printStream
构造函数的重载
FileReader(File file)
在给定文件中读取数据的 File 的情况下创建一个新 FileReader。
FileReader(FileDescriptor fd)
在给定从中读取数据的 FileDescriptor 的情况下创建一个新 FileReader。
FileReader(String fileName)
在给定从中读取数据的文件名的情况下创建一个新 FileReader
成员功能函数的重载
从类 java.io.InputStreamReader 继承的方法
close, getEncoding, read, read, ready
从类 java.io.Reader 继承的方法
mark, markSupported, read, read, reset, skip
从类 java.lang.Object 继承的方法
clone equals finalize getClass hashCode notify notifyAll toString wait
重要的函数
close read
谢谢观看阿童木与小丸子的博客