Java 字符流的使用

Java基础IO流之字符流的使用 ☆引言☆ 大家好,我是痛而不言笑而不语的浅伤。IO流分为字节流和字符流,而上一篇文章我们学习了字节流,这篇文章带大家一起来学习字符流吧。对文章中描述错误的希望大家积极指出。 🎉博客首页:痛而不言笑而不语的浅伤 🥳欢迎关注👍点赞收藏🎊留言 ❤:热爱Java学习,期待一起交流! 🙏🏻作者水平很有限,如果发现错误,求告知,多谢! 🥰有问题可以私信交流!!! 目录 ☆引言☆ 🚀什么是字符流? 🛸字符流的分类 🚀什么是字符输入流? 🛸基本共性功能方法 🛸字符输入流的分类 🚀... 阅读详情

IO流用来处理设备之间的数据传输

Java对数据的操作是通过流的方式

流按操作数据分为两种:直接流和字符流

流按流向分为:输入流和输出流

字节流的抽象基类:InputStream  OutputStream

字符流的抽象基类: Reader   Writer

由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀

比如:InputStream 的子类FileInputStream

            Reader  的子类FileReader


往硬盘上存储一些文本数据。

这是写的动作, 因为是文本数据所以用字符流就可以了

在Writer体系中,需要一个用于操作文件的对象FileWriter

创建FileWriter流对象,必须要在构造函数中指定数据存储的目的的

那么对象一建立,就会生产存储数据的文件,同时调用了底层资源

如果当前目录下没有该文件,该对象建立时,会自动创建

如果当前目录下该文件已经存在,在对象建立时,会将原来的文件覆盖

如果构造函数加入了参数true,那么不会覆盖原有文件,会在原有文件后进行续写

FileWriter fw = new FileWriter("text.txt",true);

通过流对象的写入方法,将数据写入

该方法会将数据写入到了流中(缓冲区),

fw.write("al\r\nsjdfl");


想要将缓冲区的数据写入到目的地,需要对缓冲进行刷新

fw.flush();


关闭资源

fw.close();关闭之前 会自动刷新一次

flush  close区别:flush刷新缓冲数据后,流对象可以继续使用    

close刷新缓冲数据后,流对象关闭,不可以再使用


异常处理:

import java.io.*;
class  FileWriteDemo2{
	public static void main(String[] args) {
		FileWriter fw = null;
		try{
			fw = new FileWriter("k:\\yichang.txt");
    			fw.write("lsaj");
		}catch (IOException e){
			System.out.println(e.toString());
		}finally{
			try{
				if (fw!=null)
				fw.close();
			}catch (IOException e){
				throw new RuntimeException("关闭失败");
			}
      
		}
	}
}



读取一个硬盘上的文本数据,并将数据打印到控制台上

Reader  因为要读取一个文件,需要一个读取操作文件FileReader

创建字符流读取对象,在初始化时,必须要指定一个已有的文本文件,否则抛出异常,让流对象和已有文件相关联

FileReader fr = new FileReader ("text.txt");
//使用读取对象读取文件
int ch = 0;
while ((ch= fr.read())!=-1){
	System.out.println((char)ch);
}
fr.close();


第二种格式:     

//创建一个读取流对象和text.txt文件关联。
FileReader fr = new FileReader("text.txt");
//定义一个字符数组,存储读取到的字符。
char[] chs = new char[1024];
//将读取到的字符存储到指定chs数组中。该方法会返回读取字符个数。
int len = 0;
while((len=fr.read(chs))!=-1){
	System.out.println(new String(chs,0,len));
}
fr.close();


复制一个文本文件。

原理:读取已有文件,将已有的文件的数据写入到另一个文件中

FileReader fr = new FileReader("text.txt");
FileWriter fw = new FileWriter("text1.txt");
int ch = 0;
while((ch=fr.read())!=-1){
	fw.write(ch);
}
fw.close();
fr.close();


第二种写法:

FileReader fr  = new FileReader("text.txt");
FileWriter fw = new FileWriter("text4.txt");
char[] buf = new char[1024];int len = 0;while((len=fr.read(buf))!=-1){fw.write(buf,0,len);}fw.close();fr.close();


带异常处理写法:

FileReader fr = null;
FileWriter fw = null;
try{
	fr = new FileReader("FileWriterDemo.java");
	fw = new FileWriter("text4.txt");
	char[] buf = new char[1024];
	int len = 0;
	while((len=fr.read(buf))!=-1){
		fw.write(buf,0,len);
	}
}catch (IOException e){
	System.out.println(e.toString());
}finally{
	try{
		if(fw!=null)
		fw.close();
	}catch (IOException e){
		System.out.println(e.toString());
	}
	try{
		if(fr!=null)
			fr.close();
	}catch (IOException e){
		System.out.println(e.toString());
	}
}


字符流的缓冲区:

缓冲区的出现提高了对数据的读写效率
对应类: BufferedWriter    BufferedReader
缓冲区要结合流才可以使用,是在流的基础上对流的功能进行了增强
BufferedWriter :
        FileWriter fw = new FileWriter("bufw.txt");
缓冲区对象,缓冲区是对流进行效率的提高,所以在构造时,先要有流对象。
BufferedWriter bufw = new BufferedWriter(fw);
bufw.write("lsdjfl");
bufw.newLine();  //换行符
bufw.flush();
bufw.close();


readLine()的原理:

readLine()方法其实底层用的还是read方法,将read方法读取到的字符进行临时存储,但读取到换行符的时候,将数组中存储的数组变成字符串返回。

FileReader fr = new FileReader("bufw.txt");
BufferedReader bfr = new BufferedReader(fr);
String line = null;
while((line=bfr.readLine())!=null){
	System.out.println(line);
}


Ansys Lumerical | 薄膜铌酸锂电光调制器的仿真与优化 本文详细介绍了使用Ansys Lumerical进行薄膜铌酸锂电光调制器仿真与优化的全流程。从基础原理到电学仿真、光学模拟技巧,再到设计优化实战经验,帮助工程师掌握这一先进光电器件的仿真方法。重点解析了薄膜铌酸锂的Pockels效应和Mach-Zehnder结构设计,并提供了常见问题排查指南和最新发展动态。 阅读详情

相关推荐

Adversarial Texture for Fooling Person Detectors in the Physical World

本文提出了对抗纹理的想法(AdvTexture),与基本补丁攻击不同对抗纹理可以生成任意大小,可以覆盖任意大小的不了,并且纹理的任何局部都有对抗性的效果。当衣服被对抗纹理覆盖是,摄像头捕捉到的每一个局部区域都可以攻击探测器,这成功解决了片段缺失的问题。提出了一种两阶段生成方法:基于环形收割的可扩展生成攻击(TC-EGA)来制作广告纹理。第一阶段,训练一个全卷积网络FCN作为生成器,通过采样随机潜变量作为输入来产生纹理(不同于GAN中传统的生成器架构,每一层都使用卷积运算)......

weixin_49171105的博客 1067

Java IO流之字符流

这期博客我将给大家介绍Java IO流中剩下的最后一个重要的流:字符流。字符流的出现主要是为了解决字节流传输中文以及其他不常用符号数据后发生乱码的问题。

weixin_45676761的博客 1354

Android自动化新方案:ESP32-C3蓝牙HID模拟触控与手势操作实战(附源码)

本文详细介绍了使用ESP32-C3通过蓝牙HID协议实现Android设备自动化操作的完整方案。该硬件方案成本低廉且能完美规避系统风控,可模拟鼠标移动、点击及复杂手势操作,延迟低于50毫秒,适用于游戏连招和应用测试等场景。文章包含完整的源码实现和性能优化技巧。

kotlin6android的博客 377

Java 字符流详解

在 Java 的 I/O 体系中,字符流(Reader和Writer)是专门用于处理文本数据的输入输出流。与字节流不同,字符流以字符为单位进行读取和写入,能够更好地处理文本信息,尤其是包含多字节字符(如中文)的文本文件。本文将从字符流的类关系图开始,详细介绍字符流的原理、使用方法以及常见问题。

专注Java和MySQL领域知识分享 1250

卡尔曼滤波原理详解及系统模型建立(simulink)

卡尔曼滤波原理详解及系统模型建立(simulink) 卡尔曼滤波器 卡尔曼滤波器是在上个世界五六十年代的时候提出的,到今天已经有六十年左右的时间,但卡尔曼滤波算法不管在控制、制导、导航或者通讯方面对数据的预测能力依然处在一个不可撼动的位置上,但是很多人对于其算法内部的工作原理究竟是怎么运作的依然不理解,所以在工程上很多人都只是把卡尔曼滤波当成是一种“黑箱”预测算法,并不清楚内部原理。但实际上没有任...

weixin_43942325的博客 7万+

用VASP计算GW+BSE

VASP在5.3以后的版本都能用解BSE方程的方法,在计算光吸收的过程中考虑激子效应。 下面就来写一个用BSE计算bulkSi的例子 首先,介电函数的计算是在GW计算的基础之上的。这里首先介绍G0W0的计算(我们这里直接在PBE的波函数基础上进行G0W0计算)。 1.PBE自恰计算,写WAVECAR System= Silicon groundstate occupied

ultra1989的专栏 2万+

0021_字节缓冲流&字符流

1.字节缓冲流 1.1字节缓冲流构造方法【应用】 字节缓冲流介绍 lBufferOutputStream:该类实现缓冲输出流。 通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用 lBufferedInputStream:创建BufferedInputStream将创建一个内部缓冲区数组。 当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次很多字节 构造方法: |****|方法名|说明| |:----|:----|:-

weixin_45528849的博客 387

MuJoCo新手必看:5分钟搞定你的第一个机器人仿真(附Python代码)

本文为零基础新手提供了一份详尽的MuJoCo物理仿真引擎入门指南。从环境搭建、MJCF模型文件解析,到编写Python控制代码,手把手教你5分钟内创建并运行第一个机器人仿真。内容涵盖双摆模型控制与自定义四轮小车构建,帮助你快速掌握这一高性能开源工具,迈出机器人学与强化学习仿真的第一步。

weixin_29032489的博客 655

java中字符流_有关java中字符流使用实例总结

这篇文章主要介绍了详解Java中字符流与字节流的区别的相关资料,需要的朋友可以参考下Java中字符流与字节流的区别1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列。和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序列的对象被称为输入流;能够向其写入一个字节序列的对象被称为输出流。2. 字节流 ...

weixin_39760689的博客 117

别再为数码管引脚发愁了!用STM32的普通IO口驱动TM1650数码管模块(附完整模拟I2C代码)

本文详细介绍了如何利用STM32的普通IO口通过模拟I2C协议驱动TM1650数码管模块,提供了完整的硬件连接方案和软件实现代码。通过模拟I2C技术,开发者可以灵活使用任意GPIO引脚控制多位数码管显示,解决了传统驱动方式占用大量IO资源的问题。文章包含TM1650寄存器解析、亮度控制等实用功能实现,并分享了常见问题排查与性能优化技巧。

weixin_30764771的博客 659

图文详解Trae配置Java开发环境

本文介绍了Trae开发工具的安装配置流程:首先从官网下载安装Trae,然后安装Java开发所需的Extension Pack for Java和Spring Boot Extension Pack插件。关键步骤包括修改settings.json配置文件,需指定JDK路径、Maven可执行文件路径和用户设置文件路径。所有操作均配有图示说明,并强调要替换为实际电脑路径。

谷哥的小弟 5997

java的字符流的应用_Java中的字符流与字节流

Java中的字符流与字节流0.引言在应用中,经常要完成字符的一段文本输出或读取,用字节流可以吗?为什么需要字符流?1.计算机中的一切最终都是二进制的字节形式存在。01.写入时,首先读到的是字符,需要得到其对应的字节,然后将字节写入到输出流。step 02.读取时,首先读到的是字节,可是我们要把它显示为字符,我们需要将字节转换成字符。 例如:对于 “中国”这两个字符。在写入时,需要将其得到相应的字节...

weixin_33942142的博客 180

十九、帧间预测编码_2、解码、显示顺序与图像管理、参考帧管理

一、基本概念 1.1H.264的解码顺序和显示顺序: 解码过程中,每一帧的数据按照相应的NAL Unit在码流中的顺序传入解码器进行解码 由于B帧的存在,视频帧在输出时会进行顺序重排 1.2frame_num与POC frame_num:表示解码顺序 POC:表示显示顺序(picture_order_count) 在H.264的码流中,表示解码顺序和显示顺序分别有相应的语法元素表示。这两个值都会在码流中保存,并在读取slice信息时解析(SliceHeader中) 1.3参考帧列表 某一帧图像在解

叮咚的博客 1330

Java 字符流

字符流的介绍由于字节流操作中文不是特别的方便,所以Java就提供字符流字符流 = 字节流 + 编码表中文的字节存储方式用字节流复制文本文件时,文本文件也会有中文,但是没有问题,原因是最终底层操作会自动进行字节拼接成中文,如何识别是中文的呢?汉字在存储的时候,无论选择哪种编码存储,第一个字节都是负数。...

今天我学废了吗 2727

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java中的字符流

一,为什么会出现字符流 由于字节操作中文不是特别方便,所以Java就提高字符流 字符流= 字节流+编码表,字符流的底层还是字节流 用字节直接复制文本时,文本文件也会有中文,但是没有问题 ,原因是最终底层操作会自动进行字节拼接成中文,如何识别是中文呢? 汉字在存储的时候,无论是选择哪种编码存储,第一个字节都是负数 二,编码表 基础知识 计算机存储的信息都是用二进制数表示的:我们屏幕上看到的中文,汉字等字符都是二进制数转换之后的结果 按照某种规则,将字符存储到计算机中,称为编码。反之,将计算机中的二级

qq_53009248的博客 1484

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java处理字符流的类_java字符流处理

[java]代码库/** ProcesserCharacterStream.java** Created on 2006年8月23日, 上午8:02** 字符流处理** java.io包中加入了专门用于字符流处理的类,这些类都是Reader和Writer类的子类,* Reader和Writer是两个抽象类,只提供了一系列用于字符流处理的接口,不能生成这* 两个类的实例。* java.io包中用于字...

weixin_36372579的博客 844

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Java IO字符流

Java IO字符流

WYSCODER的博客 1082

Java SE 094 Java字符流详解

(1)一个人只要自己不放弃自己,整个世界也不会放弃你. (2)天生我才必有大用 (3)不能忍受学习之苦就一定要忍受生活之苦,这是多么痛苦而深刻的领悟. (4)做难事必有所得 (5)精神乃真正的刀锋 (6)战胜对手有两次,第一次在内心中. (7)编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~ Java SE 094 Java字符流详解 文章目录Java SE 094 Java字符流详解1.字符流2.字符流Reader和Writer3.InputStreamReader和OutputStrea.

青风百草 857

java 字符流_JAVA中字符流详解

字符流:就是在字节流的基础上,加上编码,形成的数据流字符流出现的意义:因为字节流在操作字符时,可能会有中文导致的乱码,所以由字节流引申出了字符流。字符输入流:Reader常用子类:FileReader文件字符输入流常用方法:read();read(char[ ]);read(char[ ] ,offset,len);字符输出流: Writer常用子类:文件字符输出流: Filewriter文件字符...

weixin_42299801的博客 335

java 字符流

Character Streams The Java platform stores character values using Unicode conventions. Character stream I/O automatically translates this internal format to and from the local character set. In W

FoKing的专栏 790

java 字符流读取_Java 字符流读写文件

据说,java读写文件要写很多,贼麻烦,不像c艹,几行代码就搞定。只能抄抄模板拿来用了。输入输出流分字节流和字符流。先看看字符流的操作,字节转化为字符也可读写。一、写入文件1.FileWriter类:FileWriter fw=new FileWriter("hello");//在workspace工作空间里创建文件,文件名为helloFileWriter fw=new FileWriter("E...

weixin_29361879的博客 3196

java字符流详解

当使用字节流读取文本文件时,可能会有一个小问题。就是遇到中文字符时,可能不会显示完整的字符,那是因为一个中文字符可能占用多个字节存储。所以Java提供一些字符流类,以字符为单位读写数据,专门用于处理文本文件。

m0_58975186的博客 835

Java 入门指南:Java IO流 —— 字符流

字符流(Character Stream)以字符为单位进行读取和写入操作,适用于处理文本文件、配置文件、文档等纯文本数据。字符流是由 Java 虚拟机将字节转换得到的,默认采用的是 Unicode 编码,我们可以通过构造方法自定义编码。

热带鱼的技术博客 1634

Java基础(26)字符流、字符流便捷类、高效的字符流

1. 字符流 1. 字符流的概述:由于字节流操作中文不是很方法,于是Java提供了字符流 2. 字符流 = 字节流 + 编码表 3. 编码与解码 (1)编码:按照某种编码方式把字符串数组转换成字节数组(看得懂 --> 看不懂) (2)解码:把字节数组按照某种编码方式转换成字符串(看不懂 --> 看不懂) public class TestDemo01 { public static void main(String[] args) { String str = "英雄联盟

nswzr的博客 297

Java 基础:IO 流之【字符流】

永远不要直接使用FileReaderFileWriter→ 改用并指定编码(如UTF-8文本处理务必使用缓冲流→readLine())和newLine()使用 try-with-resources 自动关闭流→ 避免资源泄漏明确区分文本与二进制数据→ 文本用字符流,其他用字节流优先考虑 NIO.2 的Files工具类→ 对于简单文件操作,代码更简洁安全字符流是 Java 处理文本数据的“桥梁”,它屏蔽了底层字节与字符编码的复杂性,让我们能以“人类可读”的方式操作文件。

lzq617789的博客 1213
上一篇: Java GUI:AWT、Swing、UI绘制、双缓冲技术
下一篇: Java 字节流InputStream、OutputStream、FileInputStream、FileOutputStream
梦中的梦
博客等级 码龄18年 16粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值