IO流操作

1、基本概念

应用程序与设备(键盘 屏幕 文件)之间进行数据的传输就叫做流操作

文件输出流 文件输出流 

文件的输出流以及输出流是指应用程序与应有设备之间的通信 比如应用程序向硬盘发送一条指令 创建一个文件并将这个文件写入1 2 3 4 5这些数字 这时相对于应用程序来说就是向文件输出一些信息 

流有两种:字节流 字符流

字节流就是将数据看成无意义的字节 给机器操作的(底层)(二进制数据)

字符流:就是将数据以字符的形式存在 给人理解和看的

其实字节就是机器语言 字符是人类语言 编码规范是一种规范使得机器语言与人类语言之间的转换可以得于普遍使用

 字节流的主要方法

字节流2个顶级父类InputStream、OutputStream,它们都是抽象类


InputStream提供的方法主要有:

序号

方法

功能说明

1

read( )

读取一个字节

2

read(byte[] b)

读取多个字节至数组b中

3

read(byte[] b, int off, int len)

读取多个字节至数组从off开始的len个字节中

4

skip(long n)

跳过n个字节

5

close

关闭输入流

 OutputStream提供的方法主要有:

序号

方法

功能说明

1

write(int n )

写入一个字节(注意只写入低8位)

2

write (byte[] b)

写入数组b中的全部字节

3

write (byte[] b, int off, int len)

写入数组b中从off开始len个字节

4

flush( )

刷新输出流,即强制输出(因有缓冲机制)

5

close

关闭输入流

FileInputStream继承自InputStream,封装了对文件的读取操作,通过文件路径或者文件对象构造一个FileInputStream对象。

FileOutPutStream继承自OutputStream,封装了对文件的写入操作,通过文件路径或者文件对象构造一个FileInputStream对象。

ObjectInputStream和ObjectOutPutStream分别封装了其它类型数据的读、写操作,ObjectInputStream构造函数传递需要InputStream子类的对象,ObjectOutPutStream构造函数传递需要OutPutStrea子类的对象。

ObjectInputStream提供的方法主要有:

序号

方法

功能说明

1

readInt、readFloat、readLong…

读取基本类型数据

2

readObject

读取引用类型数据(需反序列化)

ObjectOutPutStream提供的方法主要有:

序号

方法

功能说明

1

writeInt、writeFloat、writeLong…

写入基本类型数据

2

writeObject

写入引用类型数据(需序列化)

ObjectOutPutStream向文件中输出123和“abc”,结果如下:


所谓序列化就是将内存中的对象存储到外存上去。反序列化则反之,即将外存中的数据读入到内存中的对象中。

内存中的数据在关机后就不存在了,而外存的数据是可以永久保存的。比如游戏过程中的保存游戏,就是将某个时刻的游戏状态(比如生命值、金钱、等级等)数据保存到硬盘上;而读取游戏就是根据从文件中恢复游戏的状态。

这些数据可能是一个对象,也可能是多个对象组成的复杂数据,如果逐个将原子数据写入到文件中去,不仅复杂,而且在写入和保存的步骤和数据应该严格一致,否则数据就会错位。

序列化是将对象(不管多么复杂)整体写入文件中,将来也是整体读取,简化了读写操作。


字符流的主要方法


Reader提供的方法主要有:

序号

方法

功能说明

1

read( )

读取一个字符

2

read(char []b)

读取多个字节至数组b中

3

read(char []b, int off, int len)

读取多个字节至数组从off开始的len个字节中

4

skip(long n)

跳过n个字符

5

close

关闭输入流


Writer提供的方法主要有:

序号

方法

功能说明

1

write(int n )

写入一个字符(注意只写入低8位)

2

write (char []b)

写入数组b中的全部字符

3

write (char []b, int off, int len)

写入数组b中从off开始len个字符

4

write (String str)

写入字符串中的全部字节

5

write (String str, int off, int len)

写入字符串中从off开始len个字符

6

flush( )

刷新输出流,即强制输出(因有缓冲机制)

7

close

关闭输入流

FileReadeer和FileWriter分别实现了Reader和Writer。

缓冲机制用于应用程序和物理数据时降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。比如快递寄送点,并不是每收一个寄件就发送出去,而是收集到一定数量或一定时间后再整体发送。

3.4 FileFileFile类的基本操作

File类封装了对文件和目录的属性操作。目录也可以理解为一种特殊文件,下文中都统一称之为文件。

序号

方法

功能说明

1

File(String path)

根据路径构造一个文件

2

getName()

获取文件名

3

exists()

判断文件是否存在

4

isDirectory()

判断是否为目录

5

isFile()

判断是否为文件

6

length()

获取文件的大小

7

close

关闭输入流

8

delete()

删除文件

9

list()

列举文件或目录

10

listFiles()

列举文件

11

mkdir()

创建目录

12

renameTo

重命名,实际上也可以实现移动


猜你喜欢

转载自blog.csdn.net/weixin_39056864/article/details/80129606