前面介绍了如何应用输入流FileInputStream从本地文件读取数据。 本节介绍APP应用程序输出流FileOutputStream如何将数据写入本地文件。
在文件输出流中写入文件的过程如下:
使用FileOutputStream写入文件的过程与使用FileInputStream的过程相同,首先在File类中打开本地文件,实例化输入/输出流,然后读取/写入流
如何构建文件输出流
FileOutputStream提供了四种常见的构建方法来实例化FileOutputStream对象,每个场景都使用不同的构建方法。
使用场景File对象打开本地文件并从文件中导入数据。
不使用场景File对象,而是直接传递给文件路径。
使用FileOutputStream的构建方法,可以不使用File对象而直接传递到文件路径。 查看此构造方法的源代码时,发现File对象用于在内部打开文件。
场景3 :打开文件,将附加数据写入文件末尾。
场景必须将数据写入文件的末尾,但前面两个构造函数都无法使用前面两个场景的构造函数,因为文件开始写入数据(复盖原始文件)。 文件输出流有两种构建方法:
文件输出流(文件文件,布尔应用);
文件输出流(字符串名称,布尔应用程序;
与前面的生成方法相比,这两种生成方法分别添加了一个布尔参数append。 如果append参数为true,则从文件末尾写入数据; 如果append参数为false,则数据将复盖原始文件。
如何写入文件输出流
FileOutputStream类提供了多种单独从一个字节写入文件、从byte数组写入文件以及提取byte数组中的部分数据写入文件的方法。
示例1 :使用1:write(intb )方法写入文件。
示例程序首先调用File类的createNewFile ()创建new.txt文件,然后将str的内容写入新创建的new.txt文件中。
示例2 :使用2:write(byte ) b方法写入文件。
wite[byte[]b]方法用于将b.length字节从指定的byte数组写入输出流。
String类的getBytes ()方法将字符串转换为byte数组,并将使用FileOutputStream类的write[]b]方法转换的byte数组写入文件。
示例3 :使用3:write(byte[]b,int off,int len )方法写入文件。
此方法将len字节的数据从数组b的off位置写入输出流。
程序将指定的str内容写入文件。 fos.write(str.getbytes ),5,10 )语句的第一个参数是byte数组,第二个参数5从byte数组的下标5开始,第三个参数是写入的字节数。 运行程序后,写入的内容为“is new file”。
使用这种方法必须注意排列越界的问题。 例如,如果byte数组长度为20,并且将下标12到15个字节写入文件,则数组将越界,程序将报告错误。
示例使用文件输出流复制文件
文件复制是指将源文件中的数据写入新文件。 在实际编程中,有多种方法可以实现文件的复制,但在此情况下,使用FileInputStream和FileOutputStream来实现文件的复制。
代码中的copyFile完成文件的复制。 在复制之前,请确定源文件是否存在,并申请包含读取的源文件数据的字节数组。 此数组的大小与源文件的总字节数相同,导入成功后,将数组的内容写入目标文件。 程序的输出结果如下图所示。
知识点拨号
可以使用FileOutputStream流将字节数据写入目标文件。 文件输出流有两种方法:单字节写入和字节数组写入。 建议使用byte数组进行写入,将要写入的数据保存到byte数组中,然后写入文件。 如果写入的文件已经存在,则必须指定写入方式是复盖还是添加。