【IO流】FileWrite字符输出流
FileWrite字符输出流
- 1. 概述
- 2. 作用
- 3. 方法
- 4. 细节
- 5. 代码示例
- 6. 注意事项
1. 概述
java.io.FileWriter 类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。
FileWriter 是用于写入字符数据到文件的字符输出流。
2. 作用
-
写入字符数据:
FileWriter可以将字符数据写入到文件中。通过write()方法,可以逐个字符或批量字符(字符数组、字符串)地向文件写入数据。 -
创建新文件:如果指定的文件不存在,
FileWriter在默认情况下会创建一个新的文件,并将字符数据写入其中。这为创建和写入新的文本文件提供了便利。 -
追加写入:除了默认覆盖写入外,
FileWriter还支持以追加写入的方式将字符数据添加到已有文件的末尾。通过指定构造方法中的append参数为true,可以实现追加写入的功能。 -
文本文件处理:
FileWriter常用于处理文本文件,例如写入日志信息、配置文件、文本内容等。它提供了一种简单而有效的方式,用于操作和修改文本文件的内容。 -
字符数据流处理:
FileWriter继承自Writer类,因此除了写入字符数据到文件外,还可以应用Writer提供的其他方法来处理字符数据流,如刷新缓冲区、关闭流等操作。 -
字符编码指定:通过构造方法可以指定字符编码,以确保在文件写入和读取时所用的字符编码一致,防止出现乱码等问题。
-
资源释放:在完成文件写入操作后,应该及时调用
close()方法关闭FileWriter,释放相关资源,避免资源泄露和文件锁定问题。
3. 方法
-
构造方法
构造方法 说明 public FileWriter(File file) 创建字符输出流关联本地文件 public FileWriter(String pathname) 创建字符输出流关联本地文件 public FileWriter(File file, boolean append) 创建字符输出流关联本地文件,续写 public FileWriter(String pathname, boolean append) 创建字符输出流关联本地文件,续写
-
public FileWriter(File file)- 说明: 创建字符输出流关联本地文件。
-
public FileWriter(String pathname)- 说明: 创建字符输出流关联本地文件。
-
public FileWriter(File file, boolean append)- 说明: 创建字符输出流关联本地文件,并选择是否续写模式。
-
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) 写出字符数组的一部分
-
void write(int c)- 说明: 写出一个字符。
- 示例:
FileWriter writer = new FileWriter("output.txt"); writer.write('A'); writer.close();
-
void write(String str)- 说明: 写出一个字符串。
- 示例:
FileWriter writer = new FileWriter("output.txt"); writer.write("Hello, FileWriter!"); writer.close();
-
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();
-
void write(char[] cbuf)- 说明: 写出一个字符数组。
- 示例:
FileWriter writer = new FileWriter("output.txt"); char[] cbuf = {'H', 'e', 'l', 'l', 'o'}; writer.write(cbuf); writer.close();
-
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:参数是字符串表示的路径或者File对象都是可以的
-
细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的
-
细节3:如果文件已经存在,则会清空文件,如果不想清空可以打开续写开关
-
- 写数据
- 细节: 如果write方法的参数是整数,但是实际上写到本地文件中的是整数在字符集上对应的字符
- 释放资源
- 细节:每次使用完流之后都要释放资源
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. 注意事项
-
字符输出流与本地文件之间的字符编码关系:字符输出流将字符写入文件时,使用的是系统默认的字符编码。如果需要指定特定的字符编码,可以考虑使用 OutputStreamWriter 包装 FileWriter。
-
写出字符时的数据处理:在写出字符数据时,要注意数据的处理方式,可以一次写出一个字符、一个字符串、一个字符数组等,确保数据写入文件的正确性。
-
文件路径及文件权限:要确保指定的文件路径正确且有相应的文件权限,否则可能导致文件写入失败。
-
文件续写操作:如果需要在已有文件的基础上进行续写操作,可以使用带有 boolean 参数的构造方法来指定是否是续写模式。
-
关闭流资源:在使用完字符输出流后,务必关闭流资源,以释放系统资源并确保数据写入文件。可以使用 try-with-resource 语句来自动关闭资源。
-
异常处理:在使用 FileWriter 时,要考虑可能出现的 IO 异常情况,合理处理异常以确保程序的稳定性和可靠性。
相关文章:
【IO流】FileWrite字符输出流
FileWrite字符输出流 1. 概述2. 作用3. 方法4. 细节5. 代码示例6. 注意事项 1. 概述 java.io.FileWriter 类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。 FileWriter 是用于写入字符数据到文件的字符输出流。 2. 作用 写入字符数据:…...
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... 当取多条数据时,select结果会保存到内表中。 Select ... into...语句的结果不…...
C++完美转发【gpt】
提问:用极其通俗易懂的文字解释C的完美转发 ChatGPT 好的,让我用非常通俗易懂的方式解释一下 C 中的完美转发。 假设你有一个房子(函数),你想把家具(参数)从一个房间(函数&#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建模及预测
🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享 擅长Python、Matlab、R等主流编程软件 累计十余项国家级比赛奖项,参与研究经费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依赖的包进行管理),此时可以执行 node -v 和 npm -v 分别查看node和npm的版本号: 配置系统变量 因为在执…...
Vue前端对请假模块——请假开始时间和请假结束时间的校验处理
开发背景:Vueelement组件开发 业务需求:用户提交请假申请单,请假申请的业务逻辑处理 实现:用户选择开始时间需要大于本地时间,不得大于请假结束时间,请假时长根据每日工作时间实现累加计算 页面布局 在前…...
搭建freqtrade量化交易机器人
本文采用python量化机器人框架 freqtrade 开始操作! freqtrade官方文档 官方文档内容过多,请先跟随本文入门阅读,后续深入学习可参考官方文档~ 1. 准备云服务器 docker 环境 这里以云服务器选择 ubuntu 系统开始,先…...
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 计算机网络的概念、功能、组成和分类(一)计算机网络的概念(二)计算机网络的功能(三)计算机网络的组成1.组成部分2.工作方式3.功能组成 (四)计算机网络的分类 总结 1.…...
pytorch中的各种计算
对tensor矩阵的维度变换,加减乘除等是深度学习中的常用操作,本文对一些常用方法进行总结 矩阵乘法 混合矩阵相乘,官网 torch.matmul(input, other, *, outNone) → Tensor这个方法执行矩阵相乘操作,需要第一个矩阵的最后一个维度…...
大数据技术之 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代码及依赖下载编译运行(如果要运行wvp整个项目,这步可以先不执行) 5 编译wvp-pro下载源码(建议从github上下载,gitee上维护有时候不是很同步)编…...
CentOS删除除了最近5个JAR程序外的所有指定Java程序
帮我写一个shell脚本,ps -eo pid,lstart,cmd --sort-start_time | grep "pgz-admin"查到的结果,返回的所有进程PID,第六个之上的,全部kill 当然,你可以创建一个简单的Shell脚本来完成这个任务。以下是一个例…...
面试redis篇-13Redis为什么那么快
Redis是纯内存操作,执行速度非常快采用单线程,避免不必要的上下文切换可竞争条件,多线程还要考虑线程安全问题使用I/O多路复用模型,非阻塞IOI/O多路复用模型 Redis是纯内存操作,执行速度非常快,它的性能瓶颈是网络延迟而不是执行速度, I/O多路复用模型主要就是实现了高效…...
别再死记硬背回溯算法了!用Python可视化带你玩转八皇后问题(附完整代码)
用Python动画拆解八皇后问题:从算法恐惧到视觉愉悦 第一次接触回溯算法时,你是否也被那些自我调用的递归函数和抽象的状态回退弄得头晕目眩?八皇后问题作为算法学习的经典案例,本应是理解回溯思想的绝佳入口,却常常因为…...
iommu与virtio
Virtio:虚拟机里的 “虚拟设备总线”作用:让虚拟机(Guest)高效使用宿主机(Host)提供的虚拟设备虚拟网卡:virtio-net虚拟磁盘:virtio-blk虚拟显卡:virtio-gpu虚拟 IOMMU&a…...
Playwright爬虫进阶:如何用`page.route`拦截请求、模拟登录并高效监听API数据?
Playwright爬虫进阶:如何用page.route拦截请求、模拟登录并高效监听API数据? 现代Web应用越来越依赖动态数据加载和复杂的反爬机制,传统的爬虫技术往往难以应对。Playwright作为一款强大的浏览器自动化工具,提供了丰富的API来模拟…...
从“统计字符数”到“词频分析”:一个散列思想,搞定Python/Java/C++多语言实战
从“统计字符数”到“词频分析”:散列思想的多语言实战指南 在编程竞赛和实际开发中,频率统计是一个高频出现的经典问题。无论是统计文本中字符出现的次数,分析用户行为日志中的事件频率,还是计算电商平台上商品的购买热度&#x…...
保姆级教程:在Linux(Ubuntu 20.04)上搞定Java 11 + JavaFX 11的完整配置流程
从零开始:Ubuntu 20.04下Java 11与JavaFX 11开发环境深度配置指南 在Linux系统上进行Java桌面应用开发,环境配置往往是新手面临的第一个挑战。不同于Windows或macOS的一键安装体验,Ubuntu上的JavaFX开发需要开发者对模块化系统、环境变量和依…...
高端地铁/轻轨门控系统控制器功率器件选型方案——高可靠、长寿命与安全驱动系统设计指南
随着城市轨道交通向智能化、高密度运营方向发展,高端地铁与轻轨的门控系统作为保障乘客安全与运营效率的关键执行单元,其驱动控制器的可靠性、响应速度及环境适应性要求极为严苛。功率开关器件作为驱动器的核心,直接决定了系统的开关损耗、热…...
目标检测调参新思路:手把手教你用DIoU Loss替换YOLOv5的默认损失函数(附代码)
目标检测调参新思路:手把手教你用DIoU Loss替换YOLOv5的默认损失函数(附代码) 在目标检测任务中,边界框回归的精度直接影响模型性能。传统YOLOv5默认采用CIoU Loss,但在处理特定场景(如密集目标、小目标检…...
ptp4l实战:从零到一,在Linux上构建高精度PTP时钟同步网络
1. 为什么需要高精度时钟同步? 想象一下,你正在参加一场线上拍卖会,出价截止时间精确到毫秒级别。如果服务器之间的时间不同步,有人可能因为时间误差而错失竞拍机会。这就是高精度时钟同步的价值所在——在金融交易、5G通信、工业…...
7 种替代方案:通过蓝牙从 iPhone 传输文件到安卓手机
“我现在找不到任何能指导我在安卓和 iOS 之间传输数据的文档或示例,有没有能通过蓝牙完成传输的应用?”—— 来自苹果官方论坛 当你从 iPhone 换成安卓手机,却没有稳定 Wi‑Fi 或 USB 连接时,如何用蓝牙把 iPhone 文件传到安卓会…...
别再手动填表了!用Java+poi-tl 1.10.0自动生成Word报表(附动态表格完整代码)
解放双手:Javapoi-tl实现智能Word报表生成实战 每次看到同事在Word和Excel之间来回切换复制数据,我都忍不住想推荐这个自动化方案。上周财务部的小张告诉我,她花了两天时间整理季度报表,最后因为粘贴错位导致数据全部重做。这种重…...
