Java28

本文介绍了如何利用FileOutputStream高效写入大量数据,包括使用字节数组和换行操作。同时,详细讲解了FileInputStream的read()方法,以及如何进行文件内容的读取、字节流的使用和文件复制。
摘要由CSDN通过智能技术生成

FileOutputStream类和FileInputStream类

已经知道了怎样用 FileOutputStream类中的方法把程序中的数据写到本地文件中,但是一个一个地写地时候效率太低了。
如果要写大量的数据,就可以用字节数组来提高效率。就可以定义一个byte类的数组(String str = “asdfghjk”; byte[] bytes = str.getBytes();)再将bytes数组传入write()方法中作为形参传入。
如果现在我需要写两行数据到本地文件中,就要实现换行。在Windows系统中,字符串"\t\n"实现换行操作,Linux中"\n"实现换行操作。
FileOutputStream类在把程序中的数据写到本地文件中的时候,write(a)(a是一个数字)不能把它续写到已存在的文件中。我们可以在write()方法中再传入一个bolean型的数据true,就可以实现数据写入的续写了。如果不传入的话,在write()方法默认有一个false的boolean型数据。

如果要读取文件中的数据,(1)创建FileInputStream类对象fis;(2)调用read()方法读取文件数据;(3)释放数据。读取出来的数据是ASCII字符对应的数字,如要读取a,输出的不会是字符a,而是数字97。要把整型强转成char类型的数据,就可以输出文件中的字母了。read()方法返回的是一个int型的数字,如果可以读取到数据就会返回ASCII码字母对应的数字;但是如果没有读取到数据的话,即读到文件末尾了,就会返回-1值,并且输出的是上一次读取的数据。

创建字节输入流对象时,如果文件不存在在,后面调用read()方法就会报错,与创建字节输出流不同,字节输出流如果没有文件,就会新建一个文件,然后把程序中的数据输入到文件中。这是因为创建文件不会有内容,字节输入流read()方法返回的值还是-1.没有意义。

我们可以使用字节输入流循环读取文件内容,使用while语句判断read()方法返回的值是不是-1.不是就读入后输出,是的话就停止读入,释放资源。特别要注意的是每调用一次read()方法就会读取下一个字节,不能为了方便就在while判断语句中调用一次,又到输出语句中调用一次,这里输出的就不会是用来判断的那个字节了,就会是它的下一个。

有了读取和写出的方法就可以实现文件的拷贝功能,在这里我们就要创建字节输入流和字节输出流,在后面释放资源的时候,先关闭后开的流,后关闭先开的流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值