当前位置: 首页 > news >正文

【IO流】FileWrite字符输出流

FileWrite字符输出流

    • 1. 概述
    • 2. 作用
    • 3. 方法
    • 4. 细节
    • 5. 代码示例
    • 6. 注意事项

1. 概述

java.io.FileWriter 类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。
FileWriter 是用于写入字符数据到文件的字符输出流。

2. 作用

  1. 写入字符数据FileWriter 可以将字符数据写入到文件中。通过 write() 方法,可以逐个字符或批量字符(字符数组、字符串)地向文件写入数据。

  2. 创建新文件:如果指定的文件不存在,FileWriter 在默认情况下会创建一个新的文件,并将字符数据写入其中。这为创建和写入新的文本文件提供了便利。

  3. 追加写入:除了默认覆盖写入外,FileWriter 还支持以追加写入的方式将字符数据添加到已有文件的末尾。通过指定构造方法中的 append 参数为 true,可以实现追加写入的功能。

  4. 文本文件处理FileWriter 常用于处理文本文件,例如写入日志信息、配置文件、文本内容等。它提供了一种简单而有效的方式,用于操作和修改文本文件的内容。

  5. 字符数据流处理FileWriter 继承自 Writer 类,因此除了写入字符数据到文件外,还可以应用 Writer 提供的其他方法来处理字符数据流,如刷新缓冲区、关闭流等操作。

  6. 字符编码指定:通过构造方法可以指定字符编码,以确保在文件写入和读取时所用的字符编码一致,防止出现乱码等问题。

  7. 资源释放:在完成文件写入操作后,应该及时调用 close() 方法关闭 FileWriter,释放相关资源,避免资源泄露和文件锁定问题。

3. 方法

  • 构造方法

    构造方法说明
    public FileWriter(File file)创建字符输出流关联本地文件
    public FileWriter(String pathname)创建字符输出流关联本地文件
    public FileWriter(File file, boolean append)创建字符输出流关联本地文件,续写
    public FileWriter(String pathname, boolean append)创建字符输出流关联本地文件,续写
  1. public FileWriter(File file)

    • 说明: 创建字符输出流关联本地文件。
  2. public FileWriter(String pathname)

    • 说明: 创建字符输出流关联本地文件。
  3. public FileWriter(File file, boolean append)

    • 说明: 创建字符输出流关联本地文件,并选择是否续写模式。
  4. public FileWriter(String pathname, boolean append)

    • 说明: 创建字符输出流关联本地文件,并选择是否续写模式。
  • 成员方法

    成员方法说明
    void write(int c)写出一个字符
    void write(String str)写出一个字符串
    void write(String str, int off, int len)写出一个字符串的一部分
    void write(char[] cbuf)写出一个字符数组
    void write(char[] cbuf, int off, int len)写出字符数组的一部分
  1. void write(int c)

    • 说明: 写出一个字符。
    • 示例:
      FileWriter writer = new FileWriter("output.txt");
      writer.write('A');
      writer.close();
      
  2. void write(String str)

    • 说明: 写出一个字符串。
    • 示例:
      FileWriter writer = new FileWriter("output.txt");
      writer.write("Hello, FileWriter!");
      writer.close();
      
  3. void write(String str, int off, int len)

    • 说明: 写出一个字符串的一部分。
    • 示例:
      FileWriter writer = new FileWriter("output.txt");
      String str = "Hello, FileWriter!";
      writer.write(str, 0, 5); // 写出 "Hello"
      writer.close();
      
  4. void write(char[] cbuf)

    • 说明: 写出一个字符数组。
    • 示例:
      FileWriter writer = new FileWriter("output.txt");
      char[] cbuf = {'H', 'e', 'l', 'l', 'o'};
      writer.write(cbuf);
      writer.close();
      
  5. void write(char[] cbuf, int off, int len)

    • 说明: 写出字符数组的一部分。
    • 示例:
      FileWriter writer = new FileWriter("output.txt");
      char[] cbuf = {'H', 'e', 'l', 'l', 'o'};
      writer.write(cbuf, 0, 3); // 写出 "Hel"
      writer.close();
      

4. 细节

FileWriter书写细节

  1. 创建字符输出流对象
    • 细节1:参数是字符串表示的路径或者File对象都是可以的

    • 细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的

    • 细节3:如果文件已经存在,则会清空文件,如果不想清空可以打开续写开关

  2. 写数据
    • 细节: 如果write方法的参数是整数,但是实际上写到本地文件中的是整数在字符集上对应的字符
  3. 释放资源
    • 细节:每次使用完流之后都要释放资源

5. 代码示例

  • 代码示例
    package text.IOStream.FileWrite.FileWrite01;import java.io.FileWriter;
    import java.io.IOException;/* FileWriter
    FileWriter构造方法
    | 构造方法                                          | 说明                             |
    | ------------------------------------------------- | -------------------------------- |
    | public Filewriter(File file)                      | 创建字符输出流关联本地文件       |
    | public FileWriter(string pathname)                | 创建字符输出流关联本地文件       |
    | public FileWriter(File file, boolean append)      | 创建字符输出流关联本地文件,续写 |
    | public FileWriter(string pathname,boolean append) | 创建字符输出流关联本地文件,续写 |FileWriter成员方法
    | 成员方法                               | 说明                   |
    | -------------------------------------- | ---------------------- |
    | void write(int c)                      | 写出一个字符           |
    | void write(string str)                 | 写出一个字符串         |
    | void write(string str,int off,int len) | 写出一个字符串的一部分 |
    | void write(char[] cbuf)                | 写出一个字符数组       |
    | void write(char[lcbuf,int off,int len) | 写出字符数组的一部分   |FileWriter书写细节
    1.创建字符输出流对象细节1:参数是字符串表示的路径或者File对象都是可以的细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的细节3:如果文件已经存在,则会清空文件,如果不想清空可以打开续写开关
    2.写数据细节: 如果write方法的参数是整数,但是实际上写到本地文件中的是整数在字符集上对应的字符
    3.释放资源细节:每次使用完流之后都要释放资源*/
    public class FileWrite01 {public static void main(String[] args) throws IOException {//创建对象FileWriter fw = new FileWriter("D:\\JavaCode\\code\\codeText01\\src\\text\\IOStream\\FileWrite\\FileWrite01\\a.txt");//读取数据fw.write("祝愿大家成功上岸!");//释放资源fw.close();}
    }
  • 输出结果
    在这里插入图片描述

6. 注意事项

  1. 字符输出流与本地文件之间的字符编码关系:字符输出流将字符写入文件时,使用的是系统默认的字符编码。如果需要指定特定的字符编码,可以考虑使用 OutputStreamWriter 包装 FileWriter。

  2. 写出字符时的数据处理:在写出字符数据时,要注意数据的处理方式,可以一次写出一个字符、一个字符串、一个字符数组等,确保数据写入文件的正确性。

  3. 文件路径及文件权限:要确保指定的文件路径正确且有相应的文件权限,否则可能导致文件写入失败。

  4. 文件续写操作:如果需要在已有文件的基础上进行续写操作,可以使用带有 boolean 参数的构造方法来指定是否是续写模式。

  5. 关闭流资源:在使用完字符输出流后,务必关闭流资源,以释放系统资源并确保数据写入文件。可以使用 try-with-resource 语句来自动关闭资源。

  6. 异常处理:在使用 FileWriter 时,要考虑可能出现的 IO 异常情况,合理处理异常以确保程序的稳定性和可靠性。

相关文章:

【IO流】FileWrite字符输出流

FileWrite字符输出流 1. 概述2. 作用3. 方法4. 细节5. 代码示例6. 注意事项 1. 概述 java.io.FileWriter 类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。 FileWriter 是用于写入字符数据到文件的字符输出流。 2. 作用 写入字符数据&#xff1a…...

WPF 【十月的寒流】学习笔记(1):DataGrid过滤

文章目录 相关链接代码仓库前言环境DataGrid 数据筛选项目配置使用原理主要代码(详细代码可以看我的GitHub仓库)Models.PersonDataGirdViewDataGridViewModel 实现效果 DataGrid直接绑定CollectionViewxamlViewModel 总结 相关链接 十月的寒流 在 WPF 中…...

当Vue项目启动后,通过IP地址方式在相同网络段的其他电脑上无法访问前端页面?

当Vue项目启动后,通过IP地址方式在相同网络段的其他电脑上无法访问前端页面,可能是由以下几个原因造成的: 服务监听地址:默认情况下,许多开发服务器(如Vue CLI的vue-cli-service serve)只监听lo…...

native sql -ABAP开发从入门到精通笔记

Native SQL SQL概要 OPEN SQL读取数据 Select Select <lines> <columns>... Select signle <cols>.... where. 列去重数据 Select distinct <cols>... where... 当取多条数据时&#xff0c;select结果会保存到内表中。 Select ... into...语句的结果不…...

C++完美转发【gpt】

提问&#xff1a;用极其通俗易懂的文字解释C的完美转发 ChatGPT 好的&#xff0c;让我用非常通俗易懂的方式解释一下 C 中的完美转发。 假设你有一个房子&#xff08;函数&#xff09;&#xff0c;你想把家具&#xff08;参数&#xff09;从一个房间&#xff08;函数&#x…...

C++之类和对象(2)

目录 1.类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 2. 赋值运算符只能重载成类的成员函数不能重载成全局函数 3. 用户没有显式实现时&…...

时间序列分析实战(四):Holt-Winters建模及预测

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…...

Springboot之集成MongoDB无认证与开启认证的配置方式

Springboot之集成MongoDB无认证与开启认证的配置方式 文章目录 Springboot之集成MongoDB无认证与开启认证的配置方式1. application.yml中两种配置方式1. 无认证集成yaml配置2. 有认证集成yaml配置 2. 测试1. 实体类2. 单元测试3. 编写Controller测试 1. application.yml中两种…...

BLEU: a Method for Automatic Evaluation of Machine Translation

文章目录 BLEU: a Method for Automatic Evaluation of Machine Translation背景和意义技术原理考虑 n n n - gram中 n 1 n1 n1 的情况考虑 n n n - gram中 n > 1 n\gt 1 n>1 的情况考虑在文本中的评估初步实验评估和结论统一不同 n n n 值下的评估数值考虑句子长度…...

代码随想录算法训练营|day42

第九章 动态规划 416.分割等和子集代码随想录文章详解 背包类型求解方法0/1背包外循环nums,内循环target,target倒序且target>nums[i]完全背包外循环nums,内循环target,target正序且target>nums[i]组合背包外循环target,内循环nums,target正序且target>nums[i] 416.分…...

vscode与vue/react环境配置

一、下载并安装VScode 安装VScode 官网下载 二、配置node.js环境 安装node.js 官网下载 会自动配置环境变量和安装npm包(npm的作用就是对Node.js依赖的包进行管理)&#xff0c;此时可以执行 node -v 和 npm -v 分别查看node和npm的版本号&#xff1a; 配置系统变量 因为在执…...

Vue前端对请假模块——请假开始时间和请假结束时间的校验处理

开发背景&#xff1a;Vueelement组件开发 业务需求&#xff1a;用户提交请假申请单&#xff0c;请假申请的业务逻辑处理 实现&#xff1a;用户选择开始时间需要大于本地时间&#xff0c;不得大于请假结束时间&#xff0c;请假时长根据每日工作时间实现累加计算 页面布局 在前…...

搭建freqtrade量化交易机器人

本文采用python量化机器人框架 freqtrade 开始操作&#xff01; freqtrade官方文档 官方文档内容过多&#xff0c;请先跟随本文入门阅读&#xff0c;后续深入学习可参考官方文档&#xff5e; 1. 准备云服务器 docker 环境 这里以云服务器选择 ubuntu 系统开始&#xff0c;先…...

php伪协议 [SWPUCTF 2022 新生赛]ez_ez_php(revenge)

打开题目 题目源代码如下 <?php error_reporting(0); if (isset($_GET[file])) {if ( substr($_GET["file"], 0, 3) "php" ) {echo "Nice!!!";include($_GET["file"]);} else {echo "Hacker!!";} }else {highlight_fi…...

1.1_1 计算机网络的概念、功能、组成和分类

文章目录 1.1_1 计算机网络的概念、功能、组成和分类&#xff08;一&#xff09;计算机网络的概念&#xff08;二&#xff09;计算机网络的功能&#xff08;三&#xff09;计算机网络的组成1.组成部分2.工作方式3.功能组成 &#xff08;四&#xff09;计算机网络的分类 总结 1.…...

pytorch中的各种计算

对tensor矩阵的维度变换&#xff0c;加减乘除等是深度学习中的常用操作&#xff0c;本文对一些常用方法进行总结 矩阵乘法 混合矩阵相乘&#xff0c;官网 torch.matmul(input, other, *, outNone) → Tensor这个方法执行矩阵相乘操作&#xff0c;需要第一个矩阵的最后一个维度…...

大数据技术之 Kafka

大数据技术之 Kafka 文章目录 大数据技术之 Kafka第 1 章 Kafka 概述1.1 定义1.2 消息队列1.2.1 传统消息队列的应用场景1.2.2 消息队列的两种模式 1.3 Kafka 基础架构 第 2 章 Kafka 快速入门2.1 安装部署2.1.1 集群规划2.1.2 集群部署2.1.3 集群启停脚本 2.2 Kafka 命令行操作…...

【GB28181】wvp-GB28181-pro部署安装教程(Ubuntu平台)

目录 前言1 安装依赖2 安装MySQL3 安装redis4 编译ZLMediaKit代码及依赖下载编译运行&#xff08;如果要运行wvp整个项目&#xff0c;这步可以先不执行&#xff09; 5 编译wvp-pro下载源码&#xff08;建议从github上下载&#xff0c;gitee上维护有时候不是很同步&#xff09;编…...

CentOS删除除了最近5个JAR程序外的所有指定Java程序

帮我写一个shell脚本&#xff0c;ps -eo pid,lstart,cmd --sort-start_time | grep "pgz-admin"查到的结果&#xff0c;返回的所有进程PID&#xff0c;第六个之上的&#xff0c;全部kill 当然&#xff0c;你可以创建一个简单的Shell脚本来完成这个任务。以下是一个例…...

面试redis篇-13Redis为什么那么快

Redis是纯内存操作,执行速度非常快采用单线程,避免不必要的上下文切换可竞争条件,多线程还要考虑线程安全问题使用I/O多路复用模型,非阻塞IOI/O多路复用模型 Redis是纯内存操作,执行速度非常快,它的性能瓶颈是网络延迟而不是执行速度, I/O多路复用模型主要就是实现了高效…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...