java的字符流

news2024/11/24 22:50:35

字符流的底层也是字节流。字符流=字节流+字符集。
特点是输入流一次读一个字节,遇到中文时,一次读多个字节(读多少个与字符集有关);输出流底层会把数据按照指定的编码方式进行编码,变成字节再写到文件中。
字符流适用于对纯文本文件进行操作。
Reader
Reader和Writer是抽象类。
Reader的实现类:
FileReader:操作本地文件的字符输入流;
BufferedReader:操作缓冲区的字符输入流;
LineNumberReader:带有行号的字符输入流。
Writer的实现类:
FileWriter:操作本地文件的字符输出流;
BufferedWriter:操作缓冲区的字符输出流;
LineNumberWriter:带有行号的字符输出流。
一、FileReader
(一)操作步骤
(1)创建字符输入流对象;
在这里插入图片描述
(2)读取数据;
在这里插入图片描述

(3)释放资源。
在这里插入图片描述
注意:
FileReader对象的空参的read()方法默认是“一次读一个字节,遇到中文一次读三个字节”,在读取之后还会进行解码转为十进制,十进制的数字也表示字符集上的数字。例如:英文二进制文件里的数据为“01100001”,read()方法进行读取解码后结果为97;中文二进制文件中内容为“11100110 10110001 10001001”,read()方法进行读取解码转成十进制为27721.
例如,新建一个a.txt文件,内容如下:
在这里插入图片描述
在这里插入图片描述
强转为字符输出:
在这里插入图片描述
带参数的read()读取数据、解码和强转三步合并了,把强转之后的数据放到数组中。
再例如,使用带参数的read():
在这里插入图片描述
说明:上述代码,‘害’后面隐藏两个字符"\r\n",所以“害\r”为一组输出,‘\r’没有显示出来;"\n说"为一组输出,且’\n’实现了换行。
注意:上述代码中的细节,new String()指定后面两个参数,读到几个字节就使用几个字节,因为最后可能字节不够填充byte数组。
二、FileWriter
构造方法:
在这里插入图片描述
后面两个构造方法第二个参数append赋值为true则进行续写。
成员方法:
在这里插入图片描述
在这里插入图片描述
例如:
在这里插入图片描述
结果为:
在这里插入图片描述
FileReader对象通过write()方法把25105根据UTF-8解码规则转化为字符“我”。
再例如,一次写多个字符:
在这里插入图片描述
结果为:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/644477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI绘图高级篇 第7篇 MJ以图换图-卡通头像

大家好,我是菜鸟哥 这个是我们MJ系列的第7篇,以前在会员群里发过,就是把头像做成卡通或者3D的效果还是很酷,或者是迪斯尼风格的。其实非常简单,就是用了一个MJ的以图换图的功能,今天给大家详细的说一下。 前…

ChatGPT 指南:如何与人工智能模型进行对话与互动

人工智能技术的快速发展使得我们能够与智能机器进行对话和互动。 ChatGPT 是一种基于 GPT-3.5 架构的强大语言模型,它能够进行自然语言处理,理解我们的问题并提供相应的回答。本文将为您提供使用 ChatGPT 进行对话和互动的详细指南。 1、提出问题 与 Cha…

Python爬虫之基础知识

爬虫基础知识 一、爬虫的概念 模拟浏览器,发送请求,获取响应 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端(主要指浏览器)发送网络请求,接收请求响应,一种按照一定的规则,…

基于springboot+mybatis+mysql+html企业人事管理系统

基于springbootmybatismysqlhtml企业人事管理系统 一、系统介绍二、功能展示1.用户登陆2.员工奖惩--员工3.合同管理--员工4.个人薪酬--员工5.培训管理--员工6.个人绩效--员工7.员工管理(管理员)8.奖惩管理(管理员)9.薪酬管理&…

华为OD机试真题B卷 JavaScript 实现【公共子串计算】,附详细解题思路

一、题目描述 给定两个只包含小写字母的字符串,计算两个字符串的最大公共子串的长度。 注:子串的定义指一个字符串删掉其部分前缀和后缀(也可以不删)后形成的字符串。 二、输入描述 输入两个只包含小写字母的字符串。 三、输…

chatgpt赋能python:Python使用的排大小方式全解析:关于SEO的学习!

Python使用的排大小方式全解析:关于SEO的学习! 对于一个Python工程师来说,深度理解编程语言的基础知识总是非常重要的,包括了语法、函数、模块、数据结构以及算法等等。而在SEO领域,Python所采用的排大小方式&#xf…

jdk动态代理和cglb动态代理

目录 概述 JDK动态代理 cglb动态代理 概述 动态代理和静态代理都是代理模式的实现方式,其主要区别在于代理类生成的时机和方式。 静态代理是在编译时就确定了代理类的代码,在程序运行前就已经存在了代理类的class文件。代理类与委托类的关系在编译时就…

STM32F407移植1588v2(ptpd)

硬件: STM32F407ZGT6开发板 软件: VSCode arm-none-eabi-gcc openOCD st-link 在github搜到一个在NUCLEO-F429ZI开发板上移植ptpd的example,因为和F407差别很小,所以就打算用这个demo移植到手头的开发板上。因为目前只需要…

【C语言】VScode中配置C语言/C++运行环境(保姆级图文)

目录 省流助手1. 下载安装VScode2. 下载编译器MinGW并解压3. 将MinGW添加至环境变量4. 安装vscode的插件5. 运行代码6. 调整和优化(这部分转自零流火星动力猿 2022.4.12)总结 欢迎关注 『C语言』 系列,持续更新中 欢迎关注 『C语言』 系列&am…

初识滴滴交易策略之三:供需调节

本篇文章分为: 1.什么是交易市场中的供需? 供需的动态性供需的相互作用 2.滴滴业务场景涉及的供需调节技术 供需感知和供需预测 时序预测供需调节以提升市场匹配程度,保持供需平衡 整数规划为司机规划更好的出车方式 模仿学习(Imi…

【工具篇】Maven使用${revision}实现多模块版本统一管理

背景说明 在使用Maven多模块结构工程时,版本管理是一件很繁琐且容易出错的事情。每次升级版本号都要手动调整或者通过mvn versions:set -DnewVerionxx命令去更改每一个子模块的版本号,非常的不方便,而且会改动所有的模块,出现如下…

Vue语法(4)

目录 1. 自定义指令 1.1 使用方法 1.2 实际案例 1.3 全局指令和局部指令 2. 组件对象 2.1 组件基础 2.2 组件对象 2.3 组件的属性——props 2.4 全局组件和局部组件 2.5 单文件组件 1. 概念: 2. 配置开发环境的指令: 3. 单文件组…

云迁移为业务赋能,跨出数字化转型第一步

新钛云服已累计为您分享752篇技术干货 云迁移如何赋能企业业务 随着科技的迅猛发展和数字化转型的浪潮席卷全球,越来越多的企业开始意识到云计算的重要性和潜力。在这个数字化时代,企业不再满足于传统的IT架构和数据中心,而是追求更高效、灵活…

《JAX可微分编程》包邮送书五本

文章目录 前言JAX到底是什么?书籍内容介绍包邮送书5本 前言 2015年,Google Brain开放了一个名为「TensorFlow」的研究项目,这款产品迅速流行并成为人工智能业界的主流深度学习框架,塑造了现代机器学习的生态系统。 7年后&#x…

Shell脚本文本三剑客之sed编辑器

目录 一、sed编辑器简介 二、sed工作流程 三、sed命令 四、sed命令的使用 1.sed打印文件内容(p) (1)打印文件所有行 (2)打印文件指定行 2.sed增加、插入、替换行(a、i、c) …

CVPR 2023 | 视频AIGC,预测/插帧/生成/编辑

1、A Dynamic Multi-Scale Voxel Flow Network for Video Prediction 视频预测(video prediction)的性能已经通过先进的深度神经网络大幅提高。然而,大多数当前的方法存在着大的模型尺寸和需要额外的输入(如,语义/深度…

【Instruction Tuning】ChatGLM 微调实战(附源码)

在之前的文章中,我们已经讲过了 ChatGPT 的三个主要流程: SFT:通过 Instruction Tuning 来微调一个监督学习模型。Reward Model:通过排序序列来训练一个打分模型。Reinforcement Learning:通过强化学习来进一步优化模…

【MySQL新手入门系列一】:手把手教你入门MySQL

如果您是一位刚刚开始学习MySQL的新手,本文将为您提供一些实用的入门知识和技巧,帮助您快速上手。 本篇文章将以windows为例,介绍MySQL的基础知识,以及如何安装、卸载、配置和使用它。 导读 一、概览1.1 MySQL是什么1.2 为什么要学…

一文掌握linux网络相关命令

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…

阿里企业邮箱登录入口

阿里企业邮箱登录入口:https://qiye.aliyun.com/ 阿里企业邮箱可以使用邮箱账号登录,也可以使用钉钉账号登录,打开登录入口,如下图: 阿里企业邮箱登录入口 企业邮箱购买页面:aliyunbaike.com/go/mail免费企…