趣文网 > 作文大全

自学Java第42天 终于接触IO流了

2020-12-02 04:05:01
相关推荐

今天是我自学Java的第42天。

感谢你的观看,谢谢你。

话不多说,开始今天的学习:

我们平时在使用计算机的过程中,会用到一个非常常用的操作:复制粘贴。

它可以将一个文件复制成另一个文件。

根据我们昨天学的两种字符流,面对这种需求该如何操作?

一、IO流复制文件

说白了,复制文件的过程就是一边读一边写的过程。代码如下:

1.方法一

①创建输入流:

a.jpg是计算机里已经存在的文件,所以创建输入流将其读取到内存。

②创建输出流:

我们需要将a.jpg复制下来,那么文件名我们可以自己定义名字,在创建输出流时,直接创建该文件。

③复制文件:

使用fis.read()可以读取文件,使用fos.write(read)可以将读到的内容写入文件。

最后不要忘了使用close方法关流。

这样运行代码,就可以将“a.jpg”文件复制成“刘小爱.jpg”。以上方法为一个字节一个字节地读取与写入,同样的道理,也可以一个字节数组一个字节数组地读取与写入。

代码如下:

2.方法二

首先定义一个字节数组buffer;其次将文件的内容按照数组长度读取到buffer中;最后同时将buffer写入另一个文件。这两种方式,哪种方式更有效率?自然是第二种方式更有效率。

为什么呢?

以一个我们现实生活中的例子来理解就是:

字节就好比是杯子,字节数组就好比是桶。

是用桶打水快,还是用杯子打水快?问题显而易见。

这个例子可能不算准确,但确实更加地好理解。

以上就是昨天学习的两种字节流的应用。今天再学习两种字符流:

二、字符流

1.字符输入流

Reader是一个抽象类,是用于读取字符流的所有类的最上层父类,其中FileReader类是其常用子类。

a.txt中的内容为:刘小爱

①使用字节输入流读取文件

“刘小爱”读取的结果是9个字节,也就是说在字节流中,一个中文是3个字节。

②使用字符输入流读取文件

“刘小爱”读取的结果是3个字符。

所以字符说白了就是字节+编码表:

其中ASCII码表是最基础的编码表;中国也有自己的编码表GBK;UTF-8编码,这是一个国际通用编码,最常用。在开发中一般也就是使用这个UTF-8编码。

其中编码和解码的编码表要一致,不然会出现乱码,也就是读文件和写文件时的编码表要是一样的。

以上是一个字符一个字符地输入,同样的道理,也可以一个字符数组一个字符数组地输入。

2.利用char数组输入

首先定义一个固定长度的字符数组char[];然后将文件按char数组长度读到char数组中;最后将char数组以字符串的形式打印出来。3.字符输出流

Writer也是一个抽象类,是用于写出字符流的所有类的最上层父类,其中FileWriter 类是其常用子类。

①使用writer方法直接写入字符

数字会按照ASCII码表转换成对应的字符。

②使用writer方法直接写入字符串

字符串其实也就相当于是一个字符数组,所以写入一个字符数组可以,直接写入一个字符串也可以。

③close方法关流

如果不关流的话,是无法将内容写入文件里面的,所以得关流。

但是一旦关流了,就没法再次写入了,想再次写入,又得创建输出流。

如果仅仅只是想保存,还希望继续编辑怎么办呢?

这就要使用到另一个方法叫flush。

4.close和flush

①flush方法

flush,刷新的意思,也就是说我们写入了一个数据,得刷新下才会将数据保存。在使用flush方法后,还可以继续写入文件。

②close方法

close方法,关流,它在关流时底层会调用flush方法。在使用close方法后,就不可以继续写入文件了。

总之close和flush的区别:

close就好比我们写东西在记事本上,保存并退出编辑。flush就好比我们写记事本,点保存但是没退出(Ctrl+s),还可以继续编辑。总结

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

成长作文300字 美好的回忆作文 反省作文 秋作文 景色作文 我的植物朋友作文三年级300字 那一刻我长大了免费优秀作文 高考作文评分标准 自我介绍的英语作文 高考语文满分作文 小学生写人作文 初三生活作文 童话作文400字 有关读书的作文 好习惯作文 传统节日的作文 小乌龟作文 名胜古迹作文 写花的作文 作文例文 采访作文 高三作文 春天来了作文二年级 作文《难忘的一天》 包饺子 作文 我的同学 作文 老师我想对你说作文400字 描写秋天景色的作文 我的爸爸作文300字 描写大海的作文