IO体系结构

io体系结构

File

file类是 java.io 包中很重要的一个类;
File 类的对象可以表示文件,目录,在程序中一个 File 类对象可以代 表一个文件或目录;可以对文件或目录的属性进行操作,如:文件名、最后修改日期、文件 大小等;但是无法操作文件的具体数据,即不能直接对文件进行读/写操作。
一些File类的常用方法
关于一些文件

1.字节流与字符流

从数据流编码格式上划分为 字节流 字符流

(1)字节流中常用类 

     字节输入流 FileInputStream   字节输出流 FileOutputStream
     InputStream和OutputStream的子类都是字节流 可以读写二进制文 件,主要处理音频、图片、歌曲、字节流,处理单元 为1个字节。
对象输入输出流:
有时候,需要将运行中的对象信息持久保存起来,因为对象在内存中,程序如果终止,对象信息就不存在了
将对象信息输出到文件的过程,称为对象的序列化, 使用0biectOutputStream完成(处理流)
将对象信息从文件中输入到iava程序的过程,称为对象反序列化,使用的ObjectInputStream
对象的反序列化,会在内存中重新创建新的对象保存数据,所以,也是java中创建对象的一种方式。
InputStream 的基本方法
读取一个字节并以整数的形式返回 (0~255), 如果返回 -1 已到输入流的末尾。
int read() throws IOException
读取一系列字节并存储到一个数组 buffer , 返回实际读取的字节数,如果读取前已到输入流的
末尾返回 -1
int read(byte[] buffer) throws IOException
关闭流释放内存资源
void close() throws IOException
  OutputStream 的基本方法
向输出流中写入一个字节数据 , 该字节数据为参数 b 的低 8
void write(int b) throws IOException
将一个字节类型的数组中的从指定位置( off )开始的 len 个字节写入到输出流
void write(byte[] b, int off, int len) throws IOException
关闭流释放内存资源
void close();

(2)字符流中常用类

      字符输入流 FileReader   字符输出流 FileWriter
      Reader和Writer的子类都是字符流 主要处理字符或字符串,字符流处 理单元为1个字符。 字节流将读取到的字节数据,去指定的编码表中获取 对应文字字符。
  
Reader 的基本方法
读取一个字符并以整数的形式返回 , 如果返回 -1 已到输入流的末尾。
int read() throws IOException
读取一系列字符并存储到一个数组 buffer , 返回实际读取的字符数,如果读取前
已到输入流的末尾返回 -1
int read( char[] cbuf) throws IOException
关闭 void close() throws IOException
• Writer 的基本方法
向输出流中写入一个字符数据 , 该字节数据为参数 b 16
void write(int c) throws IOException
一个字符类型的数组中的数据写入输出流
void write( char[] cbuf) throws IOException
将一个字符类型的数组中的从指定位置( off set )开始的 length 个字符写入到
输出流
void write( char[] cbuf, int off set, int length) throws IOException
关闭 void close() throws IOException

2.节点流与处理流

根据封装类型不同流又分为 节点流 处理流

(1)节点流

如果流封装的是某种特定的数据源,如文件、字符串、字符串数组等, 则称为节点流。
节点流常用类
字节输入流 FileInputStream
字节输出流 FileOutputStream
字符输入流 FileReader
字符输出流 FileWriter

(2)处理流

如果流封装的是其它流对象,称为处理流。 处理流提供了缓冲功能, 提高读写效率, 同时增加了一些新的方法
处理流常用类
缓冲字节输出流 BufferedOutputStream
缓冲字节输入流 BufferedInputStream
缓冲字符输入流 BufferedReader
缓冲字符输出流 BufferedWriter

3.Print

Print 打印流: 只做输出没有输入 打印流分为字节打印流和字符打印流
PrintWriter:单向的输出,后面在javaEE(服务器端开发)中,可以使用PrintWriter从后端程序向前端程序响应数据

4.对象输入输出流--对象序列化

对象的寿命通常随着生成该对象的程序的终止而终止。 有时候,可能需 要将对象的状态保存下来,在需要时再将对象恢复。
引入对象的输入输出流 : 作用是用于写入对象信息与读取对象信息。 对象信息 一旦写到文 件上那么对象的信息就可以做到持久化了.

有时候,需要将运行中的对象信息持久保存起来,因为对象在内存中,程序如果终止,对象信息就不存在了
将对象信息输出到文件的过程,称为对象的序列化, 使用ObiectOutputStream完成(处理流)
   对象的输入流:ObjectInputStream


将对象信息从文件中输入到java程序的过程,称为对象反序列化,使用的ObjectInputStream
对象的反序列化,会在内存中重新创建新的对象保存数据,所以,也是java中创建对象的一种方式

对象的输出流:ObjectOutputStream

在ObjectInputStream 中用readObject()方法可以直接读取一个对象, ObjectOutputStream中用writeObject()方法可以直接将对象保存到输 出流中。
有时候,我们会为一个类添加Serializable接口,使其自动生成一个序列化编号,但是每次修改,序列化编号都会改变,此时。重新输入对象,两次序列号就不一致,解决办法是在类中生成一个序列化版本。
transient 关键字
默认情况下当执行了对象序列化的时候会将类中的全部属性的内容进行全部的序列化操作,
但是很多情况下有一些属性可能并不需要序列化的处理,这个时候就可以在属性的定义上使
transient 关键字来完成了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值