java输出流输入流的使用_Java中的IO流之文件输入输出流

Java中的IO流之文件输入输出流

1、文件流介绍

文件流是以字节为单位进行读写文件的,所以属于字节流,并且是低级流。文件流位于java.io包下。

输入输出流分别是FileInputSteam和FileOutputStream流。文件流的作用就是专门用来读写文件的。

文件流是基于流式读写的,而流式读写是一种顺序读写的形式,只能依次从文件开始,顺序向下读写文件,不能回退。

文件流属于低级流,但是可以串联高级流,完成一些复杂数据的读写操作。

2、文件输入流FileInputStream

<1>文件输入流常见构造方法

构造方法一:

FileInputStream(File file)

构造方法二:

FileInputStream(String name)

c30ca746f7fa572e63c8718bd8e22f46.png

注:创建文件输入流对象时,如果对应的文件不存在,则会抛出文件找不到异常。

<2>文件输入流读取文件的方法

文件输入流读取文件的常用三个方法如下:

int read():一次只读取一个字节。

int read(byte[] b):一次读取一个字节数组的字节。

int read(byte[] b, int offset, int len):

一次读取len个字节,然后放入字节数组的offset下标开始处。

9bdfb2630a8194fee446627d65f2a10e.png

<3>使用文件输入流读取文件内容

这里以read(byte[] b)方法为例子。

2b1c4ba2576d858b4a2454d70b5bd828.png

测试结果:

09f17cd041676f9c5a91d3891052666a.png

注:使用字节数组读取的优点是可以提高读取效率。

3、文件输出流FileOutputStream

<1>文件输出流常见构造方法

文件输出流有两类写出方式,一类是覆盖写操作,另一类是追加写操作。

覆盖写:

FileOutputStream(File file)

FileOutputStream(String name)

追加写:

FileOutputStream(File file, boolean append)

FileOutputStream(String name, boolean append)

当文件输出流构造方法第二个参数为true时,则表示开启追加写方式。

6afe0c1d59f2f221c5d2726e4e91835e.png

<2>文件输出流写出文件的方法

和文件输入流一样,也有三个写出方法。分别如下:

void write():一次写出一个字节。

void write(byte[] b):一次写出一个字节数组。

void write(byte[] b, int offset, int len):把字节数组中从下标offset开始的字节写出文件,并且写出len个长度。

90ae564e08c62dac541131ea39165b22.png

<3>文件输出流覆盖写操作

第一次写入数据:

c1fe0d270bdd8c9997c917014f828198.png

结果如下:

55f42787aa26532478f162dc82e8a2a9.png

第二次写入数据:

45635f1d223b81270a821840f499cad8.png

结果如下:

5d08fbda956bbc489430e8b96bf9ffb3.png

注:从两次写入数据的结果中可以看出,FileOutputStream的覆盖写操作,是将之前的数据清空后,然后在重新开始写入数据。

<4>文件输出流追加写操作

第一次写入数据:

c2a30b844c8882a616851443691e1440.png

结果如下:

ac659ef6f4e4bee46937ccab58aaab35.png

第二次写入数据:

78ac7c1647e9bf4245ff665c888d1987.png

结果如下:

2c6614adda6d10816089b94edb6c6b72.png

4、FOS类和RAF类覆盖方式不同之处

这里说明一下:FOS指代文件输出流FileOutputStream,而RAF则是指代RandomAccessFile类。

<1>RAF类的覆盖方式是,从文件开头开始,依次覆盖相应字节数据。

<2>FOS类的覆盖方式是,先把文件中的原有内容清空,然后在把新的内容写入文件。

综上,Java中IO流之文件输入输出流介绍完了。

这是我的第28篇文章,谢谢大家阅读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值