【零基础学java】(IO流基础)

IO流
存储和读取数据的解决方案
I--- input O---- output

可以用于读写文件中的数据
问:IO流是谁在读,谁在写,以谁为参照物看读写的方向呢---》程序/内存

纯文本文件:用window自带记事本能打开并且能读懂的文件

按流的方向进行划分
输出流:程序---->文件输入流:文件----->程序


操作文件类型进行划分

字节流:可以操作所有类型的文件字符流:纯文本文件

IO流体系

体系的具体划分

字节流

OutputStream

OutputStream,由于是父类,抽象类不能直接创建他的对象,但是他有一个子类File,可以操作本地文件,所以我们创建FileOutputStream,同时也要指定路径,其中File只是其中一个功能

FileOutputStream书写细节
细节:参数是字符串表示的路径或者是File对象都是可以的
如果文件不存在会创建一个新的文件,但要保证父级路径是存在的
如果文件已经存在,则会清空文件
写出数据,
write方法的参数是整数,但是实际上写到本地文件中的是整数在ASCII对应的字符

释放资源
每次使用完流之后都要释放资源

实例:

FileOutputStream写数据的3种方式
void write(int b) 一次写一个字节数据
void write(byte[] b) 一次写一个字节数组数据
void write(byte[] b,int off,int len) 一次写一个字节数组的部分数据

InputStream

与OutputStream相似,我们也要创建对应的FileInputStream来操作文件。

FilelnputStream
操作本地文件的字节输入流,可以把本地文件中的数据读取到程序中来。
书写步骤:
①创建字节输入流对象
②读数据

3. 释放资源

FilelnputStream书写细节
创建字节输入流对象
细节1:如果文件不存在,就直接报错。
②读取数据
细节1:
一次读一个字节,读出来的是数据在ASCII上对应的数字
细节2:
读到文件末尾了,read方法返回-1。
③释放资源
细节1:每次使用完流必须要释放资源。

字符集

1.在计算机中,任意数据都是以二进制的形式来存储的
2.计算机中最小的存储单元是一个字节
3.ASCII字符集中,一个英文占一个字节

4.简体中文版windows,默认使用GBK字符集
5.GBK字符集完全兼容ASCII字符集
一个英文占一个字节,二进制第一位是0
一个中文占两个字节,二进制高位字节的第一位是1

1.Unicode字符集的UTF-8编码格式
总结
一个英文占一个字节,二进制第一位是0,转成十进制是正数
一个中文占三个字节,二进制第一位是1,第一个字节转成十进制是负数

如何不产生乱码?
1,不要用字节流读取文本文件
2,编码解码时使用同一个码表,同一个编码方式

可以指定编码解码方式

字符流

字符流=字节流+字符集
字符流的底层其实就是字节流

字符集特点
输入流:一次读一个字节,遇到中文时,一次读多个字节
输出流:底层会把数据按照指定的编码方式进行编码,变成字节再写到文件中

使用场景:对于纯文本文件进行读写操作

字符输入流

FileReader构造方法
①创建字符输入流对象
构造方法说明
public FileReader(File file) 创建字符输入流关联本地文件
public FileReader(String pathname) 创建字符输入流关联本地文件

细节1:如果文件不存在,就直接报错。

FileRead成员方法

②读取数据
成员方法说明
public int read()读取数据,读到末尾返回-1
public int read(char[] buffer)读取多个数据,读到末尾返回-1

细节1:
按字节进行读取,遇到中文,一次读多个字节,读取后解码,返回一个整数
细节2:
读到文件末尾了,read方法返回-1。

③释放资源

成员方法说明
public int close()释放资源/关流

空参read方法
字符流的底层也是字节流,默认也是一个字节一个字节的读取的。
如果遇到中文就会一次读取多个,GBK一次读两个字节,UTF-8一次读三个字节

默认也是一个字节一个字节的读取的,如果遇到中文就会一次读取多个
.在读取之后,方法的底层还会进行解码并转成十进制。
最终把这个十进制作为返回值,想看到中文汉字,就是把这些十进制数据,再进行char强转就可以了


有参的read方法:读取数据,解码,强转三步合并了 ,把强转之后的字符放到数组当中 相当于空参的read+强制类型转换

FileWrite

FileWriter书写细节
创建字符输出流对象
细节1:参数是字符串表示的路径或者File对象都是可以的
细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的
细节3:如果文件已经存在,则会清空文件,如果不想清空可以打开续写开关

②写数据
细节:如果write方法的参数是整数,但是实际上写到本地文件中的是整数在字符集上对应的字符
③释放资源

细节:每次使用完流之后都要释放资源

字符流原理解析


1创建字符输入流对象
底层:关联文件,并创建缓冲区(长度为8192的字节数组)
读取数据
底层

1.判断缓冲区中是否有数据可以读取


2.缓冲区没有数据:就从文件中获取数据,装到缓冲区中,每次尽可能装满缓冲区如果文件中也没有数据了,返回-1

3.缓冲区有数据:就从缓冲区中读取。
空参的read方法:一次读取一个字节,遇到中文一次读多个字节,把字节解码并转成十进制返回有参的read方法:把读取字节,解码,强转三步合并了,强转之后的字符放到数组中

关于输入输出,解码编码,强制转换的问题

写汉字:直接写,就像说话一样自然
读汉字:需要"翻译"一下(强转),因为读到的是"外语编码"

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

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

相关文章

易语言开发者的职业跃迁与生态共建

易语言开发者的职业跃迁与生态共建 🚀 1.20.1 学习目标 🎯 作为《易语言开发从入门到精通》的收官核心章,本章将整合前19章的所有技术栈与商业逻辑,为易语言开发者打造一套可落地、可复制、可长期成长的职业发展体系,你…

五大主流CRM品牌核心能力横向对比:从闭环到协同的全维度拆解

在企业数字化转型中,CRM已从“销售工具”升级为“全链路协同平台”。本文选取超兔一体云、Oracle CX、Capsule CRM、智赢云CRM、橙子CRM五大主流品牌,围绕线索到回款闭环、后端供应链管理、协同工具对接三大核心场景,结合流程、数据、易用性多…

当AI学会“举一反三”:基于迁移学习的高速列车轴承智能故障诊断系统全解

实验室里的完美数据模型,如何在现实复杂运行环境中保持高精度?迁移学习正为工业智能诊断带来一场静默革命。 在飞驰的京沪高铁上,列车正以350公里时速疾驰。车轴轴承如同列车的心脏,必须时刻保持健康。传统维护依靠定期检修和阈值报警,但一个令人不安的事实是:超过60%的轴…

2026电路板厂家排行榜:技术 + 产能双优,选购不踩坑

电路板(PCB)作为电子产业的核心基石,其品质与技术实力直接影响终端产品的性能与稳定性。2026年,行业内涌现出一批兼具技术创新、产能规模与服务优势的优质厂家,以下为大家盘点5大代表性品牌,它们在不同领域…

鸿蒙应用的云原生部署实战

鸿蒙应用的云原生部署实战一、章节概述 1.1 学习目标 ✅ 掌握鸿蒙云原生架构的核心组件、设计模式与端云协同逻辑 ✅ 落地《全生态智能待办》的云原生部署方案:容器化打包、微服务拆分、弹性扩容 ✅ 集成华为Cloud Engine与AGC云服务,实现端云数据同步与…

华为ensp:VRF

目录 一、核心概念与作用 二、工作原理 三、拓扑及配置 总结 VRF(Virtual Routing and Forwarding,虚拟路由转发)是网络虚拟化核心技术,能在一台物理路由器 / 三层交换机上创建多个逻辑隔离的路由实例,每个实例拥有…

WD5208S,380V降12V500MA,高性能低成本于,应用于小家电电源领域

一、卓越性能:打造高效能与低成本的双重优势​(一)简洁外围电路:降低系统复杂度,控制成本开支​WD5208S 在电路设计上极具优势,其外围电路架构极为简洁,所需搭配的元器件数量大幅减少。这一特性…

基于SpringBoot的博客系统(源码+lw+部署文档+讲解等)

课题介绍本课题聚焦用户内容创作分享与互动交流的核心需求,设计并实现基于SpringBoot框架的博客系统。当前博客领域存在内容管理杂乱、用户互动渠道不畅、文章检索效率低、个性化展示不足等问题,制约了创作者的内容传播效率,也影响了读者的阅…

事关你的银行卡:分段显示卡号的4种方法

小伙伴们好啊&#xff0c;今天说说如何将银行卡号每隔4位分段显示&#xff0c;如下图所示&#xff1a;方法1&#xff1a;快速填充复制D2单元格卡号&#xff0c;粘贴到E2单元格&#xff0c;每隔四位手工输入空格。选中E2:E9单元格区域&#xff0c;按<CtrlE>&#xff0c;即…

JiaJiaOCR:面向Java ocr的开源库

在 OCR 技术落地过程中&#xff0c;Java 开发者常面临 "Python 生态繁荣&#xff0c;Java 集成困难" 的困境 —— 要么依赖jni调用 exe/dll 外部文件&#xff0c;要么跨平台部署踩坑不断。 JiaJiaOCR 为您带来革命性突破&#xff01; &#x1f389; 本项目将同步更…

【优化部署】遗传算法GA异构节点智能部署策略(延长无线传感器网络寿命)【含Matlab源码 14850期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab武动乾坤博客之家&#x1f49e;…

【飞行员分析】八度分析战斗机飞行员表现仿真(研究心率、睡眠质量、任务复杂性、经验和环境如何影响压力、认知负荷和整体任务表现)【含Matlab源码 14853期】含报告

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab领域博客之家&#x1f49e;&…

PVDF薄膜电晕极化:佰力博检测实验室专业解决电晕极化需求

在柔性电子、精密传感器、新能源储能等领域&#xff0c;PVDF薄膜凭借优异的压电、铁电性能占据核心地位。但很多科研人都遇到过同一个难题&#xff1a;为什么同样的PVDF基膜&#xff0c;制成器件后性能差异巨大&#xff1f;答案藏在关键步骤——电晕极化里 。 作为赋予PVDF薄膜…

【文献-1/6】通过知识集成增强植物疾病识别中的异常检测

这是一篇关于植物病害识别中异常检测&#xff08;Anomaly Detection&#xff09;的高水平学术论文。以下是对该文献的深度深度分析&#xff1a; 1. 文章概览 标题&#xff1a;Enhancing anomaly detection in plant disease recognition with knowledge ensemble&#xff08;…

【心电信号ECG】深度学习方法心电图信号检测和分类人类情绪【含Matlab源码 14852期】含报告

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab武动乾坤博客之家&#x1f49e;…

巨噬细胞 “控场” 肿瘤微环境:极化、吞噬机制及治疗应用新进展

吞噬作用作为维持组织稳态的核心生理过程&#xff0c;在肿瘤微环境&#xff08;TME&#xff09;中通过免疫抑制调控与代谢重编程机制形成促肿瘤效应。巨噬细胞作为该过程的主要效应细胞&#xff0c;其M1/M2表型极化平衡及功能转换直接影响肿瘤进展。 一、 核心概念与生物学意义…

国企、民企、外企的AI数据治理,为何不能用同一把钥匙?

不同类型企业的数据状况迥异&#xff0c;面临的治理挑战也截然不同&#xff0c;导致通用型方案往往“水土不服”。数据治理&#xff0c;特别是AI赋能的治理&#xff0c;绝非纯粹的技术部署&#xff0c;而是与企业性质、监管环境和发展阶段深度结合的方案。上一期&#xff0c;给…

从 AnyScript 到 TypeScript:如何利用 Type Guards 与 Type Predicates 实现精准的类型锁死

在 TypeScript 项目的开发过程中&#xff0c;为了快速解决编译报错&#xff0c;开发者往往容易产生对 any&#xff08;类型逃避&#xff09;和 as&#xff08;类型断言&#xff09;的依赖。然而&#xff0c;这种处理方式在本质上是“破坏”了类型系统的逻辑链路&#xff0c;为后…

【文献-1/6】一种高效的非参数特征校准方法用于少样本植物病害分类

这是一份关于该文献《An efficient non-parametric feature calibration method for few-shot plant disease classification》的深度分析报告&#xff1a; 1. 文章概览 标题&#xff1a;An efficient non-parametric feature calibration method for few-shot plant disease c…

【心电信号ECG】心电图信号分析:分析心率和心律失常的心脏信号(含心率)【含Matlab源码 14856期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab武动乾坤博客之家&#x1f49e;…