Java笔记 --- 六、IO流

news2024/11/18 3:49:22

六、IO流

概述

分类

  • 纯文本文件:Windows自带的记事本打开能读懂的

eg:txt文件,md文件,xml文件,lrc文件

IO流体系

字节流

FileOutputStream

  • 操作本地文件的字节输出流,可以把程序中的数据写到本地文件中

  1. 创建字节输出流对象

  2. 写数据

  3. 释放资源

写数据的3种方式

FileInputStream

  • 操作本地文件的字节输入流,可以把本地文件中的数据读取到程序中

  1. 创建字节输入流对象

  2. 读数据

  3. 释放资源

循环读取

一次读取多个字节

  • 文件拷贝,write要从0索引开始,长度为读取到的len

计算机存储

  • 计算机最小的存储单元:字节

  • 一个字节有8位,8个比特位 eg:0111 1100

  • 1开头的两个字节是中文,高位字节的第一位是1

  • 0开头的一个字节是英文

编码与解码

字符流

FileReader

  • 缓冲区:8192的字节数组

  • 读取的时候先读取缓冲区,没有的从文件中获取数据,转到缓冲区中

FileWriter

  • 缓冲区装满,会自动保存

  • flush,自动刷新,还可以继续写数据

  • close,无法继续写数据

缓冲流(包装)

eg:

BufferedInputStream bis = new BufferedInputStream(new FileInputStream("a.txt"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("a.txt"));

  • Windows:/r/n

  • Linux/n

  • Mac:/r

转换流

  • 字符流与字节流的桥梁

  • 是字符流的子类

  • 把字节流装换成字符流 InputStreamReader

  • 把字符流装换成字节流 OutputStreamWriter

eg:

InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"), "GBK");
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("b.txt"),"UTF-8");

JDK11版本替代

字符流本身可以指定编码格式

eg:

FileReader fr = new FileReader("a.txt", Charset.forName("GBK"));
FileWriter fw = new FileWriter("b.txt",Charset.forName("UTF-8"));

序列化流(包装字节流)

  • 对象操作输出流:把Java中的对象写在本地中

  • 写出的时候要在对象类中是实现一个Serializable接口

  • Serializable是一个标记型接口,没有抽象方法

反序列化流(包装字节流)

  • 对象操作输入流:把序列化的文件中的对象读取到程序中

  1. 版本号:修改对象类之后,还可以保证读取到文件对象

    eg:

    private static final long *serialVersionUID* = 1L;

  2. transient:瞬态关键字

    不会把当前的属性序列化到文件中

  3. 序列化多个对象时,将对象放到一个集合中

    反序列化读取时,可以直接读取一个集合(强转Object),在进行集合遍历

打印流(包装输出流)

字节打印流

字符打印流

  • 字符流底层有缓冲区,想要自动刷新需要开启

image-20240205122429897

解压缩流/压缩流

解压缩流

image-20240205125045801

压缩流

单个文件

image-20240205125505884

文件夹
  • 递归

Common-is

image-20240205130505314

image-20240205130653360

image-20240205130745647

image-20240205130828050

Hutool工具包

properties配置文件

  • 读取:load()方法

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

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

相关文章

上海亚商投顾:沪指再现长下影线 多只高息股创历史新高

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 今日A股三大指数再次大幅波动,盘中再创阶段新低,收盘涨跌不一,黄白分时线分…

2024PMP考试新考纲-近年PMP真题练一练和很详细解析(3)

今天华研荟继续为您分享和解析PMP真题,一方面让大家感受实际的PMP考试和出题形式,另一方面是通过较详细的解题思路和知识讲解帮助大家最后一个多月有效备考,一次性3A通过2024年PMP考试。 2024年PMP考试新考纲-近年真题随机练一练 (注&#x…

【C/C++ 18】多态

目录 一、虚函数重写 二、虚函数重写的两个例外 三、C11 override和final 四、抽象类 五、虚函数表 六、单继承中的虚函数表 七、多继承中的虚函数表 一、虚函数重写 多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。 构成多态…

『运维备忘录』之 Netstat 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…

常用工具类-Collections

常用工具类-Collections 排序操作查找操作填充操作判断集合是否有交集不可变集合 java.util.Collections类是一个工具类,它包含了一些静态方法,用于操作集合(如列表和映射)。这个类主要用于创建不可修改的集合、填充集合、替换元素…

2024.3.28-29日ICVS-AI智能汽车产业峰会(杭州)

本次安策将携手泰雷兹一起,参展ICVS2024第四届AI智能汽车产业峰会(杭州),2024年3月28日-29日,欢迎新老朋友参加和莅临27号展台交流。 随着自动驾驶汽车政策密集落地。从我国四部门联合发布《关于开展智能网联汽车准入和上路通行试点工作的通知…

sql非查询知识点(增删改-crud没有r)

1.建库 create database database_name 2.使用该数据库 use database_name 3.建表 3.1普通建表 create table if not exists actor(actor_id smallint(5) not null primary key comment "主键id",first_name varchar(45) not null comment "名字",last…

嵌入式软件的设计模式与方法

思想有多远,我们就能走多远 4、状态与工作流类设计模式 4.1 状态与事件 行为随条件变化而改变,这里状态切换的模式也称为状态机。有限状态机 (Finite State Machine,FSM) 是由3 个主要元素组成的有向图: 状态、转换和动作。 状态是系统或者…

2024年上海市安全员B证证模拟考试题库及上海市安全员B证理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年上海市安全员B证证模拟考试题库及上海市安全员B证理论考试试题是由安全生产模拟考试一点通提供,上海市安全员B证证模拟考试题库是根据上海市安全员B证最新版教材,上海市安全员B证大纲整理…

Kafka零拷贝技术与传统数据复制次数比较

读Kafka技术书遇到困惑: "对比传统的数据复制和“零拷贝技术”这两种方案。假设有10个消费者,传统复制方式的数据复制次数是41040次,而“零拷贝技术”只需110 11次(一次表示从磁盘复制到页面缓存,另外10次表示10个消费者各自…

怎么用postman调用webservice(反推SoapUI)

<soapenv:Envelope xmlns:soapenv“http://schemas.xmlsoap.org/soap/envelope/” xmlns:lis“LisDataTrasen”> soapenv:Header/ soapenv:Body lis:Test lis:test111111111</lis:test> </lis:Test> </soapenv:Body> </soapenv:Envelope> Conten…

基于SSM的便民自行车管理系统的开发与实现(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的便民自行车管理系统的开发与实现&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0…

企业飞书应用机器人,使用python发送图文信息到群

企业飞书应用的自动化&#xff0c;需要创建企业应用&#xff0c;应用开通机器人能力&#xff0c;并获取机器人所需的app_id与app_secret&#xff08;这一部分大家可以在飞书的控制台获取&#xff1a;https://open.feishu.cn/api-explorer/&#xff09; 文章目录 步骤1&#xff…

C# OpenVINO 图片旋转角度检测

目录 效果 项目 代码 下载 效果 项目 代码 using OpenCvSharp; using Sdcb.OpenVINO; using System; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Te…

FCIS 2023:洞悉网络安全新态势,引领创新防护未来

随着网络技术的飞速发展&#xff0c;网络安全问题日益凸显&#xff0c;成为全球共同关注的焦点。在这样的背景下&#xff0c;FCIS 2023网络安全创新大会应运而生&#xff0c;旨在汇聚业界精英&#xff0c;共同探讨网络安全领域的最新动态、创新技术和解决方案。 本文将从大会的…

C语言贪吃蛇详解

个人简介&#xff1a;双非大二学生 个人博客&#xff1a;Monodye 今日鸡汤&#xff1a;人生就像一盒巧克力&#xff0c;你永远不知道下一块是什么味的 C语言基础刷题&#xff1a;牛客网在线编程_语法篇_基础语法 (nowcoder.com) 一.贪吃蛇游戏背景 贪吃蛇是久负盛名的游戏&…

内存对齐的规则

一、为什么要内存对齐 简单来说&#xff0c;就是方便计算机去读写数据。 对齐的地址一般都是 n&#xff08;n 2、4、8&#xff09;的倍数。 (1). 1 个字节的变量&#xff0c;例如 char 类型的变量&#xff0c;放在任意地址的位置上&#xff1b; (2). 2 个字节的变量&#xff0…

IPv4之后直接是IPv6,为何没有IPv5?

网络协议中,我们经常看到IPv4和IPv6,有点人可能会问为啥不提IPv5,是没有还是其他原因?下面我来给大伙普及一下,有不对之处还请指正。 一、什么是IPv4和IPv6 IPv4和IPv6都是互联网协议(Internet Protocol)的版本,用于规定网络设备进行通信时使用的标准格式。IPv4是互联…

京东首页移动端-web实战

设置视口标签以及引入初始化样式 <link rel"stylesheet" href"./css/normalize.css"><link rel"stylesheet" href"./css/index.css"> body常用初始化样式 body {width: 100%;min-width: 320px;max-width: 640px;margin:…

问题:鼻中隔前上部血供主要来自于筛后动脉。( ) #学习方法#其他

问题&#xff1a;鼻中隔前上部血供主要来自于筛后动脉。&#xff08; &#xff09; 对 错 参考答案如图所示