第八章IOIO

File类

第八章IOIO_第1张图片
第八章IOIO_第2张图片

输入及输出的概念

输入输出(I/O) 把电脑硬盘上的数据读到程序中,称为输入,即input,进行数据的read 操作从程序往外部设备写数据,称为输出,即output。

输入流与输出流

输入流:往程序中读叫输入流。输出流:从程序中往外写叫输出流。

InputStream和OutputStream的子类都是字节流 可以读写二进制文件,主要处理音频、图片、歌曲、字节流,处理单元 为1个字节。

Reader和Writer的子类都是字符流 主要处理字符或字符串,字符流处理单元为1个字符。 字节流将读取到的字节数据,去指定的编码表中获取对应文字。

字节流与字符流

字节流中常用类

字节输入流 FileInputStream

字节输出流 FileOutputStream

字符流中常用类

字符输入流 FileReader

字符输出流 FileWriter

输入输出字节流

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() throws IOException

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

节点流与处理流

节点流:

如果流封装的是某种特定的数据源,如文件、字符串、字符串数组等,则称为节点流。

处理流:

如果流封装的是其它流对象,称为处理流。 处理流提供了缓冲功能,提高读写效率,同时增加了一些新的方法。

节点流中常用类

字节输入流 FileInputStream

字节输出流 FileOutputStream

字符输入流 FileReader

字符输出流 FileWriter

处理流中常用类

缓冲字节输出流 BufferedOutputStream

缓冲字节输入流 BufferedInputStream

缓冲字符输入流 BufferedReader

缓冲字符输出流 BufferedWriter

Print流

只做输出没有输入 打印流分为字节打印流和字符打印流

PrintWriter:

字符打印流 print方法可以打印各种类型数据

对象序列化

对象的输入输出流 :

主要的作用是用于写入对象信息与读取对象信息。 对象信息 一旦写到文件上那么对象的信息就可以做到持久化了.

对象的输出流:ObjectOutputStream

对象的输入流:ObjectInputStream

在ObjectInputStream 中用readObject()方法可以直接读取一个对象,
ObjectOutputStream中用writeObject()方法可以直接将对象保存到输出流中。

对象的输出流将对象写入到文件中称之为对象的序列化,所以被序列化对象的类必须要实现 Serializable接口。 Serializable接口中没有任何方法。当一个类声明实现Serializable接口后,表明该类可被序列化。

对象的输出流将指定的对象写入到文件的过程,就是将对象序列化的过程.。

对象 的输入流将指定序列化好的文件读出来的过程,就是对象反序列化的过程。

transient关键字

默认情况下当执行了对象序列化的时候会将类中的全部属性的内容进行全部的序列化操作,

但是很多情况下有一些属性可能并不需要序列化的处理,这个时候就可以在属性的定义上使

用transient关键字来完成了。

你可能感兴趣的:(java)