JAVA中的FileWriter流解析

 更新时间:2023年10月16日 09:28:08   作者:咕噜是个大胖子  
这篇文章主要介绍了JAVA中的FileWriter流解析,FileWriter类提供了多种写入字符的方法,包括写入单个字符、写入字符数组和写入字符串等,它还提供了一些其他的方法,如刷新缓冲区、关闭文件等,需要的朋友可以参考下

一、FileWriter流

API说明:用于编写字符文件的便捷类, 此类的构造函数假定默认字符编码和默认字节缓冲区大小是可接受的,要自己指定这些值,请在FileOutputStream上构造OutputStreamWriter。 文件是否可用或是否可以创建取决于底层平台。 特别是某些平台允许一次只打开一个FileWriter(或其他文件写入对象)来写文件。 在这种情况下,如果涉及的文件已经打开,则此类中的构造函数将失败。 FileWriter用于编写字符流。 要编写原始字节流,请考虑使用FileOutputStream

1)编写字符文件的便捷类怎么理解?

专用于输出字符数据到文件的便捷类,如输出多个中文等用此类

2)此类的构造函数假定默认字符编码和默认字节缓冲区大小是可接受的怎么理解?

此类构造函数中有设置默认字符编码以及该类有一个常量代表字节缓冲区大小

3)自己指定这些值,请在FileOutputStream上构造OutputStreamWriter?

说明父类OutputStreamWriter对象的构造方法中有利用字节输出流FileOutputStream作为参数以及可以设置指定的字符编码

public class FileWriter extends OutputStreamWriter

二、FileWriter流构造方法

1)通过给定的File对象构造FileWriter类对象:

本质是利用File对象然后构造FileOutputStream对象再调用父类的构造方法,注意并未有关字符集和缓冲区大小的设置

    public FileWriter(File file) throws IOException {
        super(new FileOutputStream(file));
    }

2)通过给定File对象的构造FileWriter对象, 如果第二个参数为true,则字节将写入文件的末尾而不是开头即是追加内容而非覆盖

本质是利用File对象然后构造FileOutputStream对象再调用父类的构造方法注意并未有关字符集和缓冲区大小的设置

    public FileWriter(File file, boolean append) throws IOException {
        super(new FileOutputStream(file, append));
    }

3)通过给定的文件名构造FileWriter对象:本质与第一个构造方法一致

    public FileWriter(String fileName) throws IOException {
        super(new FileOutputStream(fileName));
    }

4)通过给定的文件名构造FileWriter对象, 如果第二个参数为true,则字节将写入文件的末尾而不是开头即是追加内容而非覆盖

本质是与第二个构造方法一致

    public FileWriter(String fileName, boolean append) throws IOException {
        super(new FileOutputStream(fileName, append));
    }

三、FileWriter流API

FileWriter的API中只有5个构造方法,且本质都是调用的父类OutputStreamWriter的构造方法,因此若需要了解FileWriter的构造方法,我们需要了解OutputStreamWriter类

OutputStreamWriter是从字符流到字节流的桥接:使用指定的字符集将写入其中的字符编码为字节。它使用的字符集可以通过名称指定,也可以明确指定,或者可以接受平台的默认字符集。

每次调用write()方法都会导致在给定字符上调用编码转换器。生成的字节在写入底层输出流之前在缓冲区中累积。可以指定此缓冲区的大小,但默认情况下,它足够大,可用于大多数用途。

请注意,传递给write()方法的字符不会被缓冲。

到此这篇关于JAVA中的FileWriter流解析的文章就介绍到这了,更多相关FileWriter流解析内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android应用开发之将SQLite和APK一起打包的方法

    Android应用开发之将SQLite和APK一起打包的方法

    这篇文章主要介绍了Android应用开发之将SQLite和APK一起打包的方法,文章时间较早,尽管现在开发环境已大都迁移至Android Studio上,但打包原理依然相同,需要的朋友可以参考下
    2015-08-08
  • 小米Java程序员第二轮面试10个问题 你是否会被刷掉?

    小米Java程序员第二轮面试10个问题 你是否会被刷掉?

    小米Java程序员第二轮面试10个问题,你是否会被刷掉?掌握好基础知识,祝大家面试顺利
    2017-11-11
  • 关于@Component注解下的类无法@Autowired问题

    关于@Component注解下的类无法@Autowired问题

    这篇文章主要介绍了关于@Component注解下的类无法@Autowired问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java面试突击为什么要用HTTPS及它的优点

    Java面试突击为什么要用HTTPS及它的优点

    这篇文章主要介绍了Java面试突击为什么要用HTTPS及它的优点,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • maven 使用assembly 进行打包的方法

    maven 使用assembly 进行打包的方法

    这篇文章主要介绍了maven 使用assembly 进行打包的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java实现数据库图片上传与存储功能

    Java实现数据库图片上传与存储功能

    在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助
    2025-03-03
  • 关于HashMap 并发时会引起死循环的问题解析

    关于HashMap 并发时会引起死循环的问题解析

    JDK1.8之前采用头插,即在链表结构上每次都把数据放在链表头部。JDK1.8采用尾插方法,很多朋友在学习Java并发容器和框架时,看到为什么要使用ConcurrentHashMap时不知道究其原因,今天小编通过本文给大家介绍下HashMap 并发死循环问题,一起看看吧
    2021-05-05
  • Java多线程下载文件实例详解

    Java多线程下载文件实例详解

    这篇文章主要为大家详细介绍了Java多线程下载文件的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • 深入理解springMVC中的Model和Session属性

    深入理解springMVC中的Model和Session属性

    这篇文章主要介绍了深入理解springMVC中的Model和Session属性,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • RocketMQ消息重试机制原理分析讲解

    RocketMQ消息重试机制原理分析讲解

    这篇文章主要介绍了RocketMQ消息重试机制,消息的发送和消费并不是百分百成功的,在出现消息推送失败时,RocketMQ有何补偿方式来进行消息重试呢?这是我们今天要一起学习的点
    2023-02-02

最新评论