FileWriter 文件输出流是用于将数据写入 FileFileDescriptor 的输出流。文件是否可用或能否可以被创建取决于基础平台。特别是某些平台一次只允许一个FileOutputStream(或其他文件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。

FileOutputStream 用于写入诸如图像数据之类的原始字节的流。要写入字符流,请考虑使用 FileWriter

共有五个构造方法

  • FileWriter(File file)  根据给定的 File 对象构造一个 FileWriter 对象。
  • FileWriter(File file, boolean append)  根据给定的 File 对象构造一个 FileWriter 对象。
  • FileWriter(String fileName)  根据给定的文件名构造一个 FileWriter 对象。
  • FileWriter(String fileName, boolean append)  根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。
  • FileWriter(FileDescriptor fd)  构造与某个文件描述符相关联的 FileWriter 对象。

其中方法可以分为三组,入参带File的为一组,入参带String 的为一组,这两组方法基本相似。

带File 的构造方法是直接传入文件来构造FileWriter对象,而带String 的构造方法,则必须先通过new File(String path) 来构造File 文件,再来构造FileWriter对象。

查看java源码

    /*** Constructs a FileWriter object given a file name.** @param fileName  String The system-dependent filename.* @throws IOException  if the named file exists but is a directory rather*                  than a regular file, does not exist but cannot be*                  created, or cannot be opened for any other reason*/public FileWriter(String fileName) throws IOException {super(new FileOutputStream(fileName));}/*** Constructs a FileWriter object given a File object.** @param file  a File object to write to.* @throws IOException  if the file exists but is a directory rather than*                  a regular file, does not exist but cannot be created,*                  or cannot be opened for any other reason*/public FileWriter(File file) throws IOException {super(new FileOutputStream(file));}

跟踪FileOutputStream 源码查看FileOutputStream 的构造方法

    /*** 创建一个向具有指定名称的文件中写入数据的输出文件流* 省略大段注释 */ public FileOutputStream(String name) throws FileNotFoundException { this(name != null ? new File(name) : null, false); } /** * 创建一个向指定<code>File</code> 对象表示的文件中写入数据的文件输出流* 省略大段注释 */ public FileOutputStream(File file) throws FileNotFoundException { this(file, false);}

给定File file做入参的方法和给定String name 做入参的方法区别就在于给name的方法,在调用默认的构造方法前,先判断name是否为空,非空时构造File 对象出来。

再看 File file 入参的两个方法,FileWriter(File file)  和 FileWriter(File file, boolean append) 的区别在于后面多了一个boolean append 参数

boolean append 的作用是什么呢?查看

    /*** 省略大段注释* @param      file               the file to be opened for writing.* @param     append      if true , then bytes will be written*                   to the end of the file rather than the beginning*/public FileOutputStream(File file, boolean append)throws FileNotFoundException{//  省略大段代码}

append  如果为 true,则将字节写入文件末尾处,而不是写入文件开始处

append 相当于指定了写入的方式,是覆盖写还是追加写

append 为true时,追加写,相当于Linux 里面的 >> 操作符;append 为false时,覆盖写,相当于Linux 里面的 > 操作符。

FileWriter(FileDescriptor fd)  类,暂未用过,这里就不细谈了。

FileWriter学习相关推荐

  1. 学习FileReader和FileWriter类

    (<Java从入门到精通>(清华大学出版社)P277 例子是写的乱七八糟的啊,能不能好好写?) import javax.swing.*; import java.awt.*; impor ...

  2. 深度学习进阶:多分类与TensorFlow

    学习目标 目标 知道softmax回归的原理 应用softmax_cross_entropy_with_logits实现softamx以及交叉熵损失计算 应用matmul实现多隐层神经网络的计算 应用 ...

  3. Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter

    Java IO流学习总结四:缓冲流-BufferedReader.BufferedWriter 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/det ...

  4. Java学习总结:42(字节流和字符流)

    字节流与字符流 上一节我们学习了文件操作类File,但是File类虽然可以操作文件,但是却不能操作文件的内容.如果要进行文件内容的操作,就必须依靠流的概念来完成.流在实际中分为输入流和输出流两种,输入 ...

  5. 201621123057 《Java程序设计》第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车. 2.1 简述如何 ...

  6. jdk7新特性学习笔记

    jdk7新特性学习笔记 从网络down了视频看,记录下学过的东西. 1.二进制字面量 JDK7开始,可以用二进制来表示整数(byte,short,int和long),语法:在二进制数值前面加 0b或者 ...

  7. java将读到的换行符存储到数据表中_Java学习之路013天

    第27次 学习主题:容器遍历以及IO流 学习目标: 1 掌握容器的遍历 2 掌握IO流的基本概念,结构,以及文件字节流 对应视频: http://www.itbaizhan.cn/course/id/ ...

  8. 基于深度学习神经网络等机器学习技术实现一个医学辅助诊断的专家系统原型

    3.运行环境搭建 操作系统:Ubantu (1)安装python模块 sudo apt-get install python-pip (2)安装numpy sudo apt-get install p ...

  9. Dom4j 解析Xml文档及XPath查询 学习笔记

    本文查阅方法:     1.查阅目录 -- 查阅本文目录,确定想要查阅的目录标题     2.快捷"查找" -- 在当前浏览器页面,按键 "Ctrl+F" 按键 ...

最新文章

  1. 一文读懂Python版的十大经典排序算法(附动图演示)
  2. 第十届蓝桥杯大赛软件赛省赛 C/C++ 大学B组
  3. 国王的游戏(华东师范大学-信息学竞赛学教案)
  4. [转]JSP中EL表达式三元运算符的使用
  5. Unity 通过Unity Admob Plugin插件集成admob教程
  6. Chapter6_Vocoder
  7. java in out 参数_总是避免Java中的in-out参数?
  8. django-正向查询与反向查询演练-查询集的三种状态
  9. inux下只显示文件
  10. 基于python的作业管理系统_python day18 作业 Django 开发主机管理系统
  11. mysql触发器不能alter
  12. java和c语言的区别_都说C语言不会过时,但你是否还需要掌握其他语言?
  13. Jasper报表 自动序列号
  14. struct (5.31)
  15. 软件加入使用时间_2020年,加入“midi音乐制作讲堂”内部会员,学音乐制作变得更简单...
  16. 硬盘数据恢复软件FinalData使用心得
  17. DotNetBar布局(一)
  18. 百度ai开放平台体验
  19. 在本地机上使用VNC远程连接CentOs7
  20. np.take()函数用法 python numpy

热门文章

  1. matlab画不定积分图像实例,matlab怎么画函数图像,原来是这样的
  2. 广东未来科技AI立体数码相机:因细节而闪耀
  3. 【3D建模制作技巧分享】zbrush中如何卡硬边?
  4. 使用OpenGL实现场景构建
  5. [CEOI2011] Balloons
  6. 详解sprintf()sprintf_s()
  7. 视觉SLAM面试题汇总(三)
  8. 用selenium全自动化爬取教务系统作业清单
  9. 文件服务器报错413,HTTP 错误 413.1 - Request Entity Too Large错误的解决方法
  10. 最新版本EasyRecovery15个人免费版电脑数据恢复工具