前面介绍了如何应用输入流FileInputStream从本地文件读取数据。本节介绍应用输出流FileOutputStream把数据写入本地文件。

用FileOutputStream写入文件流程如下:

使用FileOutputStream写入文件的过程同使用FileInputStream过程相同,都是先用File类打开本地文件,实例化输入输出流,然后调用流的读写方法读取或写入数据,最后关闭流。

FileOutputStream的构造方法

FileOutputStream提供了4个常用构造方法,用于实例化FileOutputStream对象,不同的场景使用不同的构造方法。

场景1:使用File对象打开本地文件,从文件读取数据。

场景2:不使用File对象,直接传入文件路径。

FileOutputStream的构造方法允许直接传入文件路径,而无须使用File对象。查看该构造方法的源代码,其内部使用了File对象打开文件。

场景3:打开文件,在文件的尾部追加写入数据。

场景要求在文件的尾部写入数据,由于前面两个构造函数都是文件开始写入数据(覆盖原文件),因此不能使用前面2个场景的构造函数。FileOutputStream提供了另外两个构构造方法,分别是:

FileOutputStream(File file, boolean append);

FileOutputStream(String name, boolean append);

同前面的构造方法相比,这两个构造方法各多了一个boolean参数append。append参数为true时,数据从文件尾部写入;append参数为false时,数据覆盖原文件。

FileOutputStream的写入方法

FileOutputStream类提供了多种文件写入方法,可以单独写一个字节到文件,也可以写一个byte数组到文件,也可以取byte数组的部分数据写入到文件。

例1:使用write(int b)方法写入文件。

例子程序首先调用File类的createNewFile()创建new.txt文件,然后将str内容写入到新创建的new.txt文件中。

例2:使用write(byte[] b)方法写入文件。

write(byte[] b)方法用于将b.length个字节从指定的byte数组写入到输出流。

String类的getBytes()方法可以将字符串转换为byte数组,使用FileOutputStream 类的write(byte[] b)方法,将转换的byte数组写入文件。

例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个字节到文件,就会造成数组越界,程序报错。

例4:使用FileOutputStream复制文件

复制文件是将源文件数据写入到新文件,在实际编程中,实现文件的复制有很多种方法,本案例使用FileInputStream和FileOutputStream实现文件的复制。

代码中的copyFile完成文件的复制,在复制之前,先判断一下源文件是否存在,然后申请一个byte数组,用于存储读取的源文件数据,该数组大小与源文件总字节数相同,读取成功后,再将数组内容写入到目标文件。程序输出结果如下图所示:

■ 知识点拨

使用FileOutputStream流可以写入字节数据到目标文件,FileOutputStream提供了单字节写入和byte数组写入两种方式。建议使用byte数组写入,将待写入的数据存储到一个byte数组中,然后再写入文件。当写入的文件已经存在时,需要指明写入方式是覆盖还是追加。

java 将fileoutputstream 文件流保存为文件_Java输出流FileOutputStream使用详解相关推荐

  1. Java之文件流操作的文件读写

    Java之文件流操作的文件读写 本人非常喜欢Java的代码风格,今天记录一下文件字符串的读写,但是Java对于 制作exe文件非常不友好,而本人业务的要求,基本上都是制作exe文件,或者程序,Java ...

  2. 将文件流(InputStream)写入文件 将上传文件MultipartFile写到文件

    将文件流(InputStream)写入文件 方式一:不包裹Buffered(不使用缓冲) //将文件流(InputStream)写入文件 long size = 0; FileOutputStream ...

  3. 文件流下载ppt文件无法打开或文件已损坏

    在项目中遇到"文件流下载ppt文件无法打开或文件已损坏"这种情况,我也是查阅资料来一个排查问题的汇总 1.要设置responseType,在接口传参的时候传参过去 2.注意接口返回 ...

  4. js下载文件流,提示文件损坏问题

    记录一下前端下载后端返回的文件流,提示文件损坏问题. const blob = new Blob([content.data], {// type是需要对应的文件类型type:"applic ...

  5. python流获取控制台_对Python捕获控制台输出流的方法详解

    有时候我们的代码里可能要调用控制台命令,比如我想用Python写一个批量编译 .java 文件的脚本,用到如下代码 常规用法 os.system import os,traceback try: p ...

  6. java调用webservice_笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解...

    原标题:笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解 Java开发网站架构演变过程,到目前为止,大致分为5个阶段,分别为单体架构.集群架构.分布式架构.SOA架构和微服务架构.下 ...

  7. Java中常见RuntimeException与其他异常表及Exception逻辑关系详解

    Java中常见RuntimeException与其他异常表及Exception逻辑关系详解 前言 常见`RuntimeException` 其他错误类型 `Error`类 `Exception`类 E ...

  8. java中北大学ppt总结+课后习题第四章(小宇特详解)

    java中北大学ppt总结+课后习题第四章(小宇特详解) 继承 子类与父类 继承是根据现有类创建新的类的机制,由继承而得到的新类称为子类(subclass)或派生类(derived class),被继 ...

  9. Java调用SMSLib用单口短信猫发送短信详解

    技术园地 当前位置:短信猫网站主页 > 技术园地 > [转载]Java调用SMSLib用单口短信猫发送短信详解 发布时间:2017/02/09 点击量:620 SMSLib是Apache的 ...

最新文章

  1. 2.Lucene3.6.2包介绍,第一个Lucene案例介绍,查看索引信息的工具lukeall介绍,Luke查看的索引库内容,索引查找过程
  2. 项目中的加减法--《最后期限》读书笔记(1)
  3. 还是俄罗斯方块之android版
  4. 谈谈我的程序人生程序生涯-飞鸽传书
  5. spring RestTemplate用法详解
  6. 信息学奥赛一本通(2053:【例3.3】三个数)
  7. mvc5 @html,如何在MVC 5中使用 HTML5 Viewer
  8. 自己实现的数值到大写人民币的实现
  9. python排序算法的时间复杂度_Python算法的时间复杂度和空间复杂度(实例解析)
  10. Ubuntu Server Download
  11. 百度云apkg手机文件怎么打开_下载不限速,这款网盘软件,轻松秒杀百度云!...
  12. 6款沙发背景墙装饰画 总有一幅你喜欢的
  13. 高速公路ETC自由流收费技术
  14. 航班信息显示系统-总结
  15. 如何在App Store用流量下载超过150M的软件?
  16. 1905. 统计子岛屿
  17. 浅谈软件测试行业的前景,就业方向和薪资待遇
  18. 云服务器deeplearning_吴恩达deeplearning.ai将于11月6日开放第四课,主讲卷积神经网络...
  19. C语言宏定义(常用宏定义)
  20. 编码器脉冲计数器,角度速度位移测量,Modbus RTU模块 WJ66

热门文章

  1. Stripe支付微信小程序端完整解决方案
  2. html字体大小、颜色、粗体、下划线代码(局部)
  3. 枚举的应用:熄灯问题讨厌的青蛙
  4. 接口幂等性设计与实现
  5. nginx connect()错误(10061: No connection could be made because the target machine actively refused it)
  6. 国产集中式数据库综合对比(达梦、人大金仓、海量)
  7. Ngnix配置config
  8. 【python小练】0014题 和 0015 题
  9. 在html代码中加广告
  10. 本周 GitHub 速览:自动化当道,破密、Python爬虫各凭本事