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

Java——IO流(二)-(1/7):字符流-FileReader、FileWriter、字符输出流的注意事项(构造器及常用方法、小结)

目录

文件字符输入流-读字符数据进来

介绍

构造器及常用方法

实例演示

文件字符输出流-写字符数据出去

介绍、构造器及常用方法

实例演示

字符输出流使用时的注意事项

小结


文件字符输入流-读字符数据进来

介绍

FileReader(文件字符输入流)

  • 作用:以内存为基准,可以把文件中的数据以字符的形式读入到内存中去。

构造器及常用方法

构造器说明
public FileReader(File file)创建字符输入流管道与源文件接通
public FileReader(String pathname)创建字符输入流管道与源文件接通
方法名称说明
public int read()每次读取一个字符返回,如果发现没有数据可读会返回-1.
public int read(char[] buffer)每次用一个字符数组去读取数据,返回字符数组读取了多少个字符,如果发现没有数据可读会返回-1.

实例演示

文件Temp.txt的内容如下:

每次读取一个字符

import java.io.FileReader;
import java.io.Reader;public class FileReaderTest1 {public static void main(String[] args) {try (//1.创建一个文件字符输入流管道与源文件接通Reader fr = new FileReader("untitled/src/Temp.txt");){//2.读取文本文件的内容int c;      //记住每次读取的字符编号while( (c = fr.read())!= -1 ){System.out.print((char) c);}//每次读取一个字符的形式,性能肯定是比较差的。} catch (Exception e) {e.printStackTrace();}}
}

 运行结果:

每次读取多个字符 

import java.io.FileReader;
import java.io.Reader;public class FileReaderTest1 {public static void main(String[] args) {try (//1.创建一个文件字符输入流管道与源文件接通Reader fr = new FileReader("untitled/src/Temp.txt");){//2.读取文本文件的内容//3.每次读取多个字符char[] buffer = new char[3];int len;        //记住每次读取了多少个字符while( (len = fr.read(buffer)) != -1 ){//读取多少倒出多少System.out.println(new String(buffer, 0, len));}}catch (Exception e){e.printStackTrace();}}
}

文件字符输出流-写字符数据出去

介绍、构造器及常用方法

FileWriter(文件字符输出流)

  • 作用:以内存为基准,把内存中的数据以字符的形式写出到文件中去。
构造器说明
public FileWriter(File file)根据文件名创建字节输出流管道与源文件对象接通
public FileWriter(String filepath)根据文件路径创建字节输出流管道与源文件路径接通
public FileWriter(File file, boolean append)创建字节输出流管道与源文件对象接通,可追加数据
public FileWriter(String filepath, 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) 写入字符数组的一部分

实例演示

import java.io.File;
import java.io.FileWriter;
import java.io.Writer;public class FileWriterTest1 {public static void main(String[] args) {try(//0.创建一个文件字符输出流管道与目标文件接通
//                Writer fw = new FileWriter("HelloWorld/src/Temp.txt");//追加数据的管道(不会覆盖原数据)Writer fw = new FileWriter("HelloWorld/src/Temp.txt",true);){//1.public void write(int c): 写一个字符出去fw.write('a');fw.write(97);fw.write('零');//换行fw.write("\r\n");//2.public void write(String s):写一个字符串出去fw.write("我爱你中国abc");fw.write("\r\n");//3.public void write(String c,int pos,int len):写字符串的一部分出去fw.write("你当像鸟飞往你的山",4,5);fw.write("\r\n");//4.public void write(char[] buffer):写一个字符数组出去char[] buffer = {'梦','醒','a','b','c'};fw.write(buffer);fw.write("\r\n");//5.public void write(char[] buffer,int pos,int len):写字符数组的一部分出去fw.write(buffer,0,2);fw.write("\r\n");}catch (Exception e){e.printStackTrace();}}
}

运行之后Temp.txt的内容:

字符输出流使用时的注意事项

  • 字符输出流写出数据后,必须刷新流,或者关闭流,写出去的数据才能生效

写出的字符数据会先放到缓冲区里面,而缓冲区位于内存,当缓冲区一次性进行系统的资源调用时,才算真正写出了字符。

所以需要刷新或者关闭流才能使得写出去的数据生效,同时,当缓冲区满时,也会自动取调用系统资源。

方法名称说明
public void flush() throws IOException刷新流,也就是将内存中缓存的数据立即写到文件中去生效
public void close() throws IOException关闭流的操作,包含了刷新

小结

字节流、字符流的使用场景小结

  • 字节流适合做一切文件数据的拷贝(音视频,文本);字节流不适合读取中文内容输出。
  • 字符流适合做文本文件的操作(读,写)。

END


学习自:黑马程序员——Java课程

相关文章:

Java——IO流(二)-(1/7):字符流-FileReader、FileWriter、字符输出流的注意事项(构造器及常用方法、小结)

目录 文件字符输入流-读字符数据进来 介绍 构造器及常用方法 实例演示 文件字符输出流-写字符数据出去 介绍、构造器及常用方法 实例演示 字符输出流使用时的注意事项 小结 文件字符输入流-读字符数据进来 介绍 FileReader(文件字符输入流) 作…...

Spring循环依赖问题——从源码画流程图

文章目录 关键代码相关知识为什么要使用二级缓存为什么要使用三级缓存只使用两个缓存的问题不能解决构造器循环依赖为什么多例bean不能解决循环依赖问题初始化后代理对象赋值给原始对象解决循环依赖SpringBoot开启循环依赖 循环依赖 在线流程图 关键代码 从缓存中查询getSingl…...

Android SurfaceFlinger——动画播放准备(十五)

BootAnimation 本质上是一个线程,执行 run 之后,会先执行 readyToRun,接着执行 treadLoop 方法。 一、线程启动 1、BootAnimation 源码位置:/frameworks/base/cmds/bootanimation/BootAnimation.cpp readyToRun status_t BootAnimation::readyToRun() {// 添加默认资源…...

Zynq7000系列FPGA中的DMA控制器简介(二)

AXI互连上的DMA传输 所有DMA事务都使用AXI接口在PL中的片上存储器、DDR存储器和从外设之间传递数据。PL中的从设备通过DMAC的外部请求接口与DMAC通信,以控制数据流。这意味着从设备可以请求DMA交易,以便将数据从源地址传输到目标地址。 虽然DMAC在技术…...

获取 url 地址栏 ? 后面的查询字符串,并以键值对形式放到对象里面

写在前面 在前端面试当中,关于 url 相关的问题很常见,而对于 url 请求参数的问题也很常见,大部分以笔试题常见,今天就根据这道面试题一起来看一下。 问题 获取 url 地址栏?后面的查询字符串,并以键值对形式放到对象…...

List接口, ArrayList Vector LinkedList

Collection接口的子接口 子类Vector,ArrayList,LinkedList 1.元素的添加顺序和取出顺序一致,且可重复 2.每个元素都有其对应的顺序索引 方法 在index 1 的位置插入一个对象,list.add(1,list2)获取指定index位置的元素&#…...

探讨数字化背景下VSM(价值流程图)的挑战和机遇

在信息化、数字化飞速发展的今天,各行各业都面临着前所未有的挑战与机遇。作为源自丰田生产模式的VSM(价值流程图),这一曾经引领制造业革命的工具,在数字化背景下又将如何乘风破浪,应对新的市场格局和技术变…...

Conda跨平台环境迁移

问题描述: 在一台Ubuntu电脑上完全复刻在Windows中通过conda创建的环境。 导出环境 在Windows机器上,需要导出当前conda环境的配置。这将生成一个environment.yml文件,其中包含所有已安装的包和版本信息。 打开Anaconda Prompt(…...

全面掌握 Jackson 序列化工具:原理、使用与高级配置详解

全面掌握 Jackson 序列化工具:原理、使用与高级配置详解 Jackson 是一个功能强大的 JSON 处理库,广泛应用于 Java 项目中。它提供了丰富的功能和灵活的配置选项,可以轻松地在 Java 对象和 JSON 数据之间进行转换。本文将详细介绍 Jackson 的…...

mathtype7.4永久激活码密钥及2024最新破解版注册码附安装教程

MathType 7版本号还提升了对教育行业的支持,如增加了大量预定义的教学公式和符号,使老师和学生在教学过程中能够更加便捷的应用。同时,它还加强了云备份功能,用户可将自己的公式存储在云端,随时随地访问和编辑&#xf…...

【SQL】优化慢 SQL的简单思路

优化慢 SQL 需要综合考虑多个方面,包括查询的结构、索引的使用、表结构设计等。以下是一些常见的 SQL 优化技巧和步骤: 1. 检查查询计划 使用数据库提供的工具查看查询计划(例如 MySQL 的 EXPLAIN 命令)可以帮助了解查询的执行路…...

禁止浏览器对input的自动填充和填充提示(适用于谷歌、火狐、Edge(原IE浏览器)等常见浏览器)

目录 1.要解决的问题2.一技能:原生属性,小试牛刀3.二技能:傀儡input,瞒天过海4.三技能:JavaScript出击,直接开大5.九九八十一难,永远还有最后一难 写在前面: 如有转载,务…...

鸿蒙项目实战-月木学途:1.编写首页,包括搜索栏、轮播图、宫格

效果展示 搜索栏制作 相关知识回顾 输入框组件TextInput 单行输入框类型.type(InputType.Normal)//基本输入框.type(InputType.Password)//密码.type(InputType.Email)//邮箱.type(InputType.Number)//数字.type(InputType.PhoneNumber)//电话号.type(InputType.Normal).type…...

深入浅出:npm常用命令详解和实践

npm 是 Node.js 的包管理器,用于管理 Node.js 应用的依赖关系和版本。 以下是一些常用的 npm 命令: npm init: 命令用于初始化一个新的 Node.js 项目。它会创建一个 package.json 文件,这个文件包含了项目的元数据和依赖信息。 npm initnpm…...

山东大学-科技文献阅读与翻译(期末复习)(选择题+翻译)

目录 选择题 Chapter1 1.which of the following is not categorized as scientific literature 2.Which of the followings is defined as tertiary(三级文献) literature? 3.Which type of the following international conferences is listed as Number one conference…...

二分查找:自定义 upper_bound、lower_bound

二分查找详细介绍可以看这篇文章&#xff0c;此篇文章介绍返回索引的 upper_bound 和 lower_bound 的 C 实现。 lower_bound 实现代码 #include <vector>int lower_bound_index(const std::vector<int>& vec, const int& target) {int left 0;int right…...

Java 搭建个人博客基本框架

为了实现一个功能完善的个人博客系统&#xff0c;我们将使用Spring Boot作为框架&#xff0c;MySQL作为数据库&#xff0c;并引入Spring Security来处理用户认证和授权。以下是系统的详细设计和实现步骤&#xff1a; ## 项目结构 - src/main/java/com/blog - controller …...

停车场智能化管理:车位引导系统实现车位资源优化与数据分析

随着城市汽车保有量的不断增长&#xff0c;停车难问题日益凸显。尤其是在高峰时段&#xff0c;寻找停车位和取车成为了许多车主的头疼问题。为了解决这一难题&#xff0c;维小帮智能车位引导系统应运而生&#xff0c;它利用先进的技术手段&#xff0c;帮助车主快速找到停车位&a…...

梯度下降法

梯度下降法是一种在机器学习和深度学习中广泛使用的优化算法。它用于最小化某个函数&#xff0c;通常是损失函数或成本函数&#xff0c;通过迭代调整参数来找到函数的最小值点。梯度下降法的基本思想是从一个初始参数出发&#xff0c;沿着损失函数梯度&#xff08;导数&#xf…...

【高考志愿】光学工程

目录 一、专业概述 二、专业特点 三、研究和就业方向 3.1 研究方向 3.2 就业方向 四、光学工程专业排名 高考志愿选择光学工程专业无疑是一项既具深度又富挑战性的明智之举。这个古老而充满魅力的专业&#xff0c;正逐渐崭露其在现代社会中的重要性与独特魅力。 一、专业…...

PDF-Parser-1.0行业报告:市场分析与技术趋势

PDF-Parser-1.0行业报告&#xff1a;市场分析与技术趋势 1. 引言 每天都有成千上万份行业报告、白皮书和研究文档以PDF格式在企业间流转。这些文档蕴含着宝贵的市场洞察、技术趋势和商业机会&#xff0c;但手动提取和分析这些信息需要耗费大量时间和精力。PDF-Parser-1.0的出…...

开源字体实用指南:Poppins字体家族的全方位应用策略

开源字体实用指南&#xff1a;Poppins字体家族的全方位应用策略 【免费下载链接】Poppins Poppins, a Devanagari Latin family for Google Fonts. 项目地址: https://gitcode.com/gh_mirrors/po/Poppins 价值定位&#xff1a;如何让开源字体成为项目的视觉资产&#x…...

白鲸开源架构师获邀成为 ASF Member

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

WindowsCleaner:3个步骤解决C盘爆红问题的终极指南

WindowsCleaner&#xff1a;3个步骤解决C盘爆红问题的终极指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否也经历过C盘突然变红、系统卡顿不堪的困扰&a…...

VideoAgentTrek Screen Filter 大规模部署成本分析:GPU资源优化配置指南

VideoAgentTrek Screen Filter 大规模部署成本分析&#xff1a;GPU资源优化配置指南 最近和几个做视频内容审核的朋友聊天&#xff0c;大家聊得最多的不是技术有多牛&#xff0c;而是“这玩意儿跑起来到底要花多少钱”。确实&#xff0c;像VideoAgentTrek Screen Filter这类视…...

3分钟快速上手AdGuard浏览器扩展:开源广告拦截工具全平台安装指南

3分钟快速上手AdGuard浏览器扩展&#xff1a;开源广告拦截工具全平台安装指南 【免费下载链接】AdguardBrowserExtension AdGuard browser extension 项目地址: https://gitcode.com/gh_mirrors/ad/AdguardBrowserExtension AdGuard浏览器扩展是一款开源、免费的广告拦截…...

OFA视觉蕴含模型效果展示:抽象艺术作品与评论文本关联性

OFA视觉蕴含模型效果展示&#xff1a;抽象艺术作品与评论文本关联性 1. 引言&#xff1a;当抽象艺术遇见智能理解 想象一下这样的场景&#xff1a;你站在一幅抽象画前&#xff0c;画布上是狂放的笔触和难以名状的色彩组合。旁边有人评论说&#xff1a;"这幅画表达了宇宙…...

强化学习实战:Sarsa vs Q-learning,on-policy和off-policy到底怎么选?

强化学习实战&#xff1a;Sarsa与Q-learning的深度对比与策略选择指南 1. 理解策略分类的核心逻辑 在强化学习领域&#xff0c;策略选择直接影响算法的行为模式和学习效果。我们先从最基础的概念切入&#xff1a;什么是策略&#xff1f;简单来说&#xff0c;策略就是智能体在特…...

Phi-4-mini-reasoning vLLM高级特性:LoRA适配器热插拔与多任务推理切换

Phi-4-mini-reasoning vLLM高级特性&#xff1a;LoRA适配器热插拔与多任务推理切换 1. 模型概述 Phi-4-mini-reasoning 是一个基于合成数据构建的轻量级开源模型&#xff0c;专注于高质量、密集推理的数据处理。作为Phi-4模型家族的一员&#xff0c;它特别强化了数学推理能力…...

ngx_http_init_static_location_trees

1 定义 ngx_http_init_static_location_trees 函数 定义在 ./nginx-1.24.0/src/http/ngx_http.cstatic ngx_int_t ngx_http_init_static_location_trees(ngx_conf_t *cf,ngx_http_core_loc_conf_t *pclcf) {ngx_queue_t *q, *locations;ngx_http_core_loc_conf_…...