IO流总结——字节流与字符流的区别

article/2025/9/16 21:53:28

字节流与字符流的区别:

在这里插入图片描述
在这里插入图片描述

字节流与字符流的区别:

所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列。

  字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。

字节流是最基本的,包括InputStream和OutputStream,主要用在处理二进制数据,它是按字节来处理的。但实际中很多的数据是文本,于是又提出了字符流的概念,通过 InputStreamReader,OutputStreamWriter来进行。

字节流:

① FileOutputStream :往文件中写入的时候传入的参数只能是Unicode编码,也就是99——c。

这样子。

FileOutputStream fos=new FileOutputStream("ieda_test\\src\\IO\\fos.txt");
byte[]  b={91,92,93,99};
byte[]  a="abcdef".getBytes();
fos.write(b,0,b.length);

② FileInputStream :读取文件中的数据的时候,读取出来的也是编码对应的字节,如c——99。

FileInputStream fis=new FileInputStream("ieda_test\\src\\IO\\fos.txt");//读取数据
int by=fis.read();
System.out.println(by);
System.out.println((char)by);

也可以使用字节数组byte[]来一次读取一个字节数组

FileInputStream fis=new FileInputStream("ieda_test\\src\\IO\\fos.txt");byte[] bys=new byte[1024];//一次读取1024个字符数组int len;while((len=fis.read(bys))!=-1){//fis.read(bys)将fis中的内容读取出来存入bys中,为空就等于-1System.out.println(new String(bys,0,len));}

③ BufferedInputStream,BufferedOutputStream

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));

BufferedInputStream中的参数为FileInputStream
BufferedOutputStream中的参数为FileOutputStream

字符流:
① OutputStreamWriter、InputStreamWriter

FileOutputStream fos=new FileOutputStream("ieda_test\\src\\IO\\fos.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos);
osw.write(99);
osw.flush();

OutputStreamWriter 中的参数是FileOutputStream对象。
FileWriter说是OutputStreamWriter的简写,实际上却不然,OutputStreamWriter中的参数是FileOutputStream对象,FileWriter中的参数是文件路径。

FileWriter fw=new FileWriter("ieda_test\\Copy.java");
FileReader fr=new FileReader("ieda_test\\src\\IO\\IODemo01.java");

与字符流的区别是, OutputStreamWriter写入文件可以写入字符串也可以写入编码
如:

FileOutputStream fos=new FileOutputStream("ieda_test\\src\\IO\\fos.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos);
osw.write(99);
osw.write("99");
osw.flush();

fox.txt中
在这里插入图片描述

②BufferedReader、BufferedWriter

BufferedReader、BufferedWriter中的参数为FileReader、FileWriter或OutputStreamReader、InputStreamWriter。

BufferedReader br=new BufferedReader(new FileReader("ieda_test\\src\\IO\\fos.txt"));
BufferedWriter bw=new BufferedWriter(new FileWriter("ieda_test\\src\\IO\\fos.txt"));

等同于

BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("ieda_test\\src\\IO\\fos.txt")));
BufferedReader br=new BufferedReader(new FileReader(new OutputStreamWriter(new FileInputStream("ieda_test\\src\\IO\\fos.txt")));
BufferedReader br1=new BufferedReader(new FileReader("ieda_test\\src\\IO\\fos.txt"));
BufferedReader br2=new BufferedReader(new InputStreamReader(new FileInputStream("ieda_test\\src\\IO\\fos.txt")));

同样是封装文件中的数据为BufferReader对象,这里就可以看出来FileReader和InputStreamReader虽然是同级,但是参数不同,且FileReader更方便一些。

BufferedReader、BufferedWriter可以用于将字节流封装为字符流

①字节流由文件输入

BufferedReader br2=new BufferedReader(new InputStreamReader(new FileInputStream("ieda_test\\src\\IO\\fos.txt")));

②字节流由键盘录入

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

等级(个人排序,方便记忆)
BufferedWriter > FileWriter =OutputStreamWriter > BufferedInputStream > FileOutputStream


http://chatgpt.dhexx.cn/article/jRw4DxfI.shtml

相关文章

6.移动端布局-rem布局

1.rem基础 优点:可以通过修改html里边文字的大小来改变页面中其他元素的大小,可以实现整体控制 1.1 rem单位 rem(root em)是一个相对单位,类似于em。 em是相对于自身元素字体大小(若自身没有设置font-size则基础父元素的字体大…

移动端开发——rem布局

目录 前言 一、rem布局 二、rem的基础知识 三、媒体查询 1.媒体查询的使用语法 (一)mediatype 媒体类型 (二)关键字 (三)媒体特性 2.媒体查询和rem组合 3.引入样式 四、适配方案 1.技术方案1 …

Vue 使用 rem布局

Vue 使用 rem布局 1、rem布局需要安装两个插件 npm i lib-flexible -S npm i postcss-pxtorem5.1.1 -D 最新版本postcss-pxtorem需要POSTSS 8,安装老版本可用 lib-flexible: 根据移动端屏幕大小而对应改变html的fontSize postcss-pxtorem: 根据html的fo…

移动端rem布局基本介绍及原理

rem布局 em和rem的认识 在布局中,除了px之外,还有两个常见的单位,em和rem em: 相对于当前元素的字体大小→ 1em 当前标签的font-size rem: 相对于根元素(html)的字体大小→ 1rem html标签的…

JavaScript-rem布局

JavaScript-rem布局 一、什么是Rem rem和em很容易混淆,其实两个都是css的单位,并且也都是相对单位,现有的em,css3才引入的rem,在介绍rem之前,我们先来了解下em: em作为font-size的单位时,其代…

Rem布局的原理解析

Rem布局的原理解析 tobAlier关注 22017.10.25 11:27:32字数 2,630阅读 12,367 什么是Rem rem和em很容易混淆,其实两个都是css的单位,并且也都是相对单位,现有的em,css3才引入的rem,在介绍rem之前,我们先…

html5如何利用rem实现自适应布局,使用Rem布局实现自适应

之前写过一篇移动端适配的文章,很长,内容太多,看得容易凌乱,重新写个通熟易懂版的。 为什么要自适应? 比如,对于一个移动端页面,设计师给的视觉稿画布宽 750,视觉稿中的一个黄色区块的尺寸是 702 x 300,并在画板中居中。我们希望在任何一个设备中的呈现比例都与视觉稿…

Rem布局

Rem布局?什么东西???Rem布局又称等比缩放布局,是移动端布局中常用的一种布局方式。Rem布局可以通过两种方式实现,一种通过JavaScript实现;还有一种通过vw实现。在这里小编主要讲述第二种方式。 下面小编先简单的说一下rem布局的优缺点: 优点:在不同的设备下看起来比较…

(精中求精) rem适配布局

1.适配导读: 什么是适配布局?与flex或者流式布局又有什么区别? 所谓的适配布局,是让页面盒子的高度,宽度,内外边距,边框大小,文字的大小,定位的元素位置等能够根据屏幕…

移动端布局(三) rem布局及原理

什么是rem 首先来了解一下什么是em: 作为font-size的单位时,其代表父元素的字体大小,em作为其他属性单位时,代表自身字体大小。 s1、s2、s5、s6的font-size和line-height分别是多少px? <div class"p1"><div class"s1">1</div><di…

安装Mysql

设置密码 检测安装是否成功 切换到安装目录的bin下C:\Program Files\MySQL\MySQL Server 8.0\bin&#xff0c;按住shift&#xff0c;单击鼠标右键&#xff0c;点选在此处代开命令窗口 在命令行中输入mysql -u root -p,之后输入之前设定的密码如果出现如下图所示&#xff0c;…

ODBC + WIN32 API 访问MYSQL 数据库实现简单QQ用户注册和登录

//在IT行业&#xff0c;不懂数据库是不行的&#xff0c;我自己在学校里还没有学过数据库有关的知识&#xff0c;不过由于前些日子写项目的要求&#xff0c;不得不去琢磨&#xff0c;虽然有很多数据库类别&#xff0c;包括微软的 SQL server &#xff0c;access,ORACLE公司的ORA…

QQ交谈、QQ在线状态代码生成…

原文地址&#xff1a;QQ交谈、QQ在线状态代码生成&#xff0c;非QQ商家可以正常生成 作者&#xff1a;HHeOnline 非QQ商家用户&#xff0c;直接在QQ互联可以生成QQ在线状态&#xff0c;也就是QQ交谈的代码。 直接放到对应的代码里就可以正常使用了。 QQ代码生成地址&#xff1a…

qq群关系数据库 mysql_QQ群关系数据库24.52G mdf源文件下载 附上使用教程

HQY 腾讯 7000W QQ群关系数据库泄漏共24.52G。 QQ24.5gb腾讯QQ群关系数据库,不包含密码。只包含个人名字(群备注名字等信息)。 如果想在线查询更多qq群数据信息可以查看: 一、下载完24.5gQQ数据库后,解压文件 下载后不要把文件改名,打开7z,点击其中一个文件,选择合并文件…

MySQL 数据类型

数值类型 MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC)&#xff0c;以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。 关键字INT是INTEGER的同义词&#xff0c;关键字DEC是DECIMAL的同义词。 BIT数据类型保存…

mysql数据库的基本管理

一、数据库的介绍 1.数据库就是个高级的表格软件 2.常见数据库 Mysql Oracle mongodb db2 sqlite sqlserver .......3.Mysql (SUN -----> Oracle)4.mariadb 是数据库服务器 数据库中的常用名词 字段 :表格中的表头 表 :表格 库 :存放表格的目录…

mysql数据库

文章目录 一、Windows1.1 修改mysql的data文件夹存放位置&#xff1a;1.2 修改mysql密码1.3 设置Mysql允许其他电脑访问1.4 重新手动安装 二、mysql 时间查询三.解锁四.Linux4.1 下载安装4.2 配置4.3 卸载 三、Bug 一、Windows 1.1 修改mysql的data文件夹存放位置&#xff1a;…

MySQL使用与练习01

MySQL数据库概述 用来存储数据和管理数据,最终形成类似于表格的样子,有行有列(字段) 分类: 关系型数据库 和 非关系型数据库 关系型数据库&#xff0c; Oracle、MySQL、SQLServer、Access非关系型数据库&#xff0c; MongoDB、Redis、Solr、ElasticSearch、Hive、HBase 数据…

MySQL项目3总结创建与维护

登录MySQL mysql -u root -p密码 查看所有数据库 show databases; 创建数据库 CREATE DATABASE 数据库名; 修改数据库默认字符集 alter database 数据库名default character set 新字符集; 查看hao数据库创建信息&#xff1b; show create database 表名\g; 删除数据库 …

关于mysql的表情包_mysql表情包 - mysql微信表情包 - mysqlQQ表情包 - 发表情 fabiaoqing.com...

MySQ从删库到跑路_删库_MySQ表情 TFBOYS 三人击掌 - TFBOYS 三人有着独特的击掌方式_tfboys_明星表情_tfboys_明星表情表情 走,带你试衣服去(UNIQLO)_uniqlo_衣服表情 内裤不试完,谁都别想走!(UNIQLO)_不试_uniqlo_内裤表情 qqloveddme_qqloveddme表情 QQLOVE DDME(qq爱)_qq…