Java基础——字节流和字符流

news2024/11/16 7:50:09

字节流和字符流的用法几乎完全一样,区别在于字节流和字符流所操作的数据单元不同,字节流操作的单元是数据单元是8位的字节,字符流操作的是数据单元为16位的字符。

为什么要有字符流?

Java中字符是采用Unicode标准,Unicode 编码中,一个英文字母或一个中文汉字为两个字节。

而在UTF-8编码中,一个中文字符是3个字节。

那么问题来了,如果使用字节流处理中文,如果一次读写一个字符对应的字节数就不会有问题,一旦将一个字符对应的字节分裂开来,就会出现乱码了。为了更方便地处理中文这些字符,Java就推出了字符流。

字节流

字节流在Java中是以字节为基本单位进行数据的读写操作。它们是最基本的输入输出流,所有字节流的超类是`InputStream`和`OutputStream`。字节流可以处理任何类型的文件,包括文本文件和二进制文件,如图片、音频和视频。由于它们直接操作字节,所以不会涉及到字符编码的问题。字节流不自带缓冲机制,因此每次读写都是直接与文件系统交互,这在处理大量数据时可能会导致效率较低。在Java中,常见的字节流类包括`FileInputStream`、`FileOutputStream`、`BufferedInputStream`和`BufferedOutputStream`。

字符流

字符流在Java中是以字符为基本单位进行数据的读写操作。字符流的超类是`Reader`和`Writer`,它们专门用于处理文本数据。字符流在读写过程中会涉及到字符编码和解码,因此可以避免因编码不一致导致的乱码问题。字符流自带缓冲机制,通过内部的缓冲区可以提高读写效率,特别是在频繁进行读写操作时。字符流适合处理文本文件,因为它们可以保证字符的正确性和完整性。在Java中,常见的字符流类包括`FileReader`、`FileWriter`、`BufferedReader`和`BufferedWriter`。此外,还有转换流`InputStreamReader`和`OutputStreamWriter`,它们可以将字节流转换为字符流,或反之,同时进行必要的编码转换。

总结

字节流一般用来处理图像、视频、音频、PPT、Word等类型的文件。字符流一般用于处理纯文本类型的文件,如TXT文件等,但不能处理图像视频等非文本文件。用一句话说就是:字节流可以处理一切文件,而字符流只能处理纯文本文件。
字节流本身没有缓冲区,缓冲字节流相对于字节流,效率提升非常高。而字符流本身就带有缓冲区,缓冲字符流相对于字符流效率提升就不是那么大了。

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

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

相关文章

【Go语言】Go语言结构体全面解析

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

基于 Canvas 的可缩放拖动网格示例(Vue3以及TypeScript )

文章目录 1. 基本知识2. Vue33. TypeScript 1. 基本知识 基本知识讲解: Canvas API: 一种用于在网页上绘制图形的 HTML 元素,使用 JavaScript 的 Canvas API 来进行绘制 使用 getContext(2d) 方法获取 2D 绘图上下文,允许开发者绘…

MySQL数据库备份详解

文章目录 引言● 数据库备份的重要性 MySQL数据库备份的基础知识● 备份类型1、完全备份2、增量备份3、差异备份 ● 备份工具与方法1、逻辑备份工具——mysqldump2、物理备份工具——Xtrabackup3、第三方解决方案 MySQL数据库备份的实施步骤1、环境准备2、选择合适的备份工具与…

【Linux基础IO】深入解析Linux基础IO缓冲区机制:提升文件操作效率的关键

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:Linux “ 登神长阶 ” 🤡往期回顾🤡:暂无 🌹🌹期待您的关注 🌹🌹 ❀Linux基础IO 📒1. 什么是缓…

14.第二阶段x86游戏实战2-C++语言开发环境搭建-VisualStudio2017

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

基于jsonpath_ng的JSON数据查改增删

jsonpath_ng支持JSON数据的读写操作。 安装 pip install jsonpath-ng测试数据 from jsonpath_ng import parse import jsonjson_data { "store": {"book": [ { "category": "reference","author": "Nigel Rees&qu…

数据集-目标检测系列-鲨鱼检测数据集 shark >> DataBall

数据集-目标检测系列-鲨鱼检测数据集 shark >> DataBall 数据集-目标检测系列-鲨鱼检测数据集 shark 数据量:6k 想要进一步了解,请联系。 DataBall 助力快速掌握数据集的信息和使用方式,百种数据集,持续增加中。 示例&…

【自动驾驶】基于车辆几何模型的横向控制算法 | Stanley 算法详解与编程实现

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…

【Python】探索 Elpy:Emacs 中的 Python 开发环境

可以短时间不开心,但别长时间不清醒。 对于使用 Emacs 编辑器的 Python 开发者来说,Elpy 是一个强大的集成开发环境(IDE),它通过整合多个 Emacs Lisp 和 Python 包,提供了一套完整的 Python 编程支持。本文…

丹摩智算平台体验:AI开发从未如此简单

目录 初次接触丹摩智算GPU算力资源表格 轻松创建GPU实例镜像选择 实验过程体验实验中的一些细节 使用后的感受一点小建议总结 最近我一直在学习一些与深度学习相关的知识,准备自己动手做一些模型训练的实验。平时在自己电脑上跑模型总感觉有点吃力,特别是…

复制他人 CSDN 文章到自己的博客

文章目录 0.前言步骤 0.前言 在复制别人文章发布时,记得表明转载哦 步骤 在需要复制的csdn 文章页面,打开浏览器开发者工具(F12)Ctrl F 查找"article_content"标签头 右键“Copy”->“Copy element”新建一个 tx…

[大语言模型-论文精读] ACL2024-长尾知识在检索增强型大型语言模型中的作用

ACL2024-长尾知识在检索增强型大型语言模型中的作用 On the Role of Long-tail Knowledge in Retrieval Augmented Large Language Models Authors: Dongyang Li, Junbing Yan, Taolin Zhang, Chengyu Wang, Xiaofeng He, Longtao Huang, Hui Xue, Jun Huang 1.概览 问题解决&…

Windows驱动调试方法

单步调试驱动 驱动的调试不能直接在本机上进行,而是要放在虚拟机(或其它设备)中。这是因为在内核模式下,一个断点的触发将会停下整个系统而不只是单个进程。 在前面的文章里,使用了DbgPrint函数来进行日志的输出&…

学习一下怎么用git

目录 初始化操作 设置名字: 设置邮箱: 查询状态 初始化本地仓库 清空git bush控制台 git的三个区域 文件提交 将会文件提交到暂存区 暂存指定文件 暂存所有改动文件 查看暂存区里面的文件 将文件提交到版本库 git文件状态查看 ​编辑 暂存区的相关指令…

2024专业U盘格式化数据恢复工具推荐榜

对于经常在不固定办公地点工作,且依赖U盘存储重要资料的朋友来说,U盘无疑成为了随身携带的“数字保险箱”。然而,频繁使用U盘也意味着面临数据丢失的风险。面对u盘格式化怎么恢复数据的难题,您或许正寻求有效的解决方案。接下来&a…

Spring源码-从源码层面讲解传播特性

传播特性:service&#xff1a;REQUIRED&#xff0c;dao:REQUIRED 两个都是required使用的是同一个事务&#xff0c;正常情况&#xff0c;在service提交commit <tx:advice id"myAdvice" transaction-manager"transactionManager"><tx:attributes&…

2024年CSP-J认证 CCF信息学奥赛C++ 中小学初级组 第一轮真题-阅读程序题解析

2024 CCF认证第一轮&#xff08;CSP-J&#xff09;真题 二、阅读程序题 (程序输入不超过数组或字符串定义的范围&#xff0c;判断题正确填√错误填X;除特殊说明外&#xff0c;判断题 1.5分&#xff0c;选择题3分&#xff0c;共计40 分) 第一题 01 #include <iostream>…

【Python】探索 PyTorch 在机器学习中的应用

在机器学习的浪潮中&#xff0c;PyTorch 以其灵活性和易用性成为了研究者和开发者的热门选择。本文将探讨 PyTorch 在机器学习领域的应用&#xff0c;并展示如何使用 PyTorch 构建一个基本的机器学习模型。 ⭕️宇宙起点 &#x1f3ac; 机器学习简介&#x1f4a2; PyTorch 与机…

胤娲科技:AI程序员——重塑编程世界的魔法师

当魔法遇上代码 想象一下&#xff0c;一个对编程一无所知的初中生&#xff0c;在熙熙攘攘的展会现场&#xff0c;仅凭几句简单的提示词&#xff0c;就在几分钟内创造出一个功能完备的倒计时网页。 这听起来像是科幻电影中的场景&#xff0c;但如今&#xff0c;在阿里云「通义灵…

心觉:如何重塑高效学习的潜意识(1)两种方法的优缺点

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作180/1000天 你的学习习惯是什么呢 学习的时候是感到轻松吗 很多人感觉现在是知识大爆炸的时代&#xff0c;每天都会产生海量的知…