Java笔记 --- 六、IO流

六、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.rhkb.cn/news/252359.html

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

相关文章

XAI:探索AI决策透明化的前沿与展望

文章目录 📑前言一、XAI的重要性二、为什么需要可解释人工智能三、XAI的研究与应用四、XAI的挑战与展望 📑前言 随着人工智能技术的快速发展,它已经深入到了我们生活的方方面面,从智能手机、自动驾驶汽车到医疗诊断和金融投资&…

备战蓝桥杯---搜索(剪枝)

何为剪枝,就是减少搜索树的大小。 它有什么作用呢? 1.改变搜索顺序。 2.最优化剪枝。 3.可行性剪枝。 首先,单纯的广搜是无法实现的,因为它存在来回跳的情况来拖时间。 于是我们可以用DFS,那我们如何剪枝呢&#…

浅析现代计算机启动流程

文章目录 前言启动流程概述磁盘分区格式MBR磁盘GPT磁盘隐藏分区 传统BIOS引导传统BIOS启动流程 UEFI引导UEFI引导程序UEFI启动流程 引导加载程序启动操作系统相关参考 前言 现代计算机的启动是一个漫长的流程,这个流程中会涉及到各种硬件的配置与交互,包…

考研数据结构笔记(1)

数据结构(1) 数据结构在学什么?数据结构的基本概念基本概念三要素逻辑结构集合线性结构树形结构图结构 物理结构(存储结构)顺序存储链式存储索引存储散列存储重点 数据的运算 算法的基本概念什么是算法算法的五个特性有…

Linux嵌入式开发+驱动开发-中断

swi汇编指令可以产生软中断,以下是硬件中断的产生到执行完毕的全过程: 在自己设计的芯片“CPU响应中断”程序的第四个步骤可以转向“中断向量控制器”,中断向量控制器中存储中断元服务地址即处理中断处理程序的地址,而不用使用0X1…

【安卓跨程序共享数据,探究ContentProvider】

ContentProvider主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性。 目前,使用ContentProvider是Android实现跨程序共享数据的标准方…

2024年2月CCF-全国精英算法大赛题目

第一次参加这种比赛,虽然是c类赛事,但是是ccf主办的,难度还是有点的,主要是前面签到题主要是思想,后面的题目难度太高,身为力扣只刷了一百多道题目的我解决不了,这几道我只做了B,C题,E题超时了&…

生物素-PEG4-酪胺,Biotin-PEG4-TSA,应用于酶联免疫吸附实验

您好,欢迎来到新研之家 文章关键词:生物素-PEG4-酪胺,Biotin-PEG4-Tyramide,Biotin-PEG4-TSA 一、基本信息 产品简介:Biotin PEG4 Tyramine is a reagent used for tyramine signal amplification (TSA) through ca…

20240202在Ubuntu20.04.6下配置环境变量之后让nvcc --version显示正常

20240202在Ubuntu20.04.6下配置环境变量之后让nvcc --version显示正常 2024/2/2 20:19 在Ubuntu20.04.6下编译whiper.cpp的显卡模式的时候,报告nvcc异常了! 百度:nvcc -v nvidia-cuda-toolkit rootrootrootroot-X99-Turbo:~/whisper.cpp$ WH…

5-2、S曲线计算【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】,查看本系列全部文章 摘要:本节介绍S曲线的基本变换,将基本形式的S曲线变换成为任意过两点的S曲线,为后续步进电机S曲线运动提供理论支撑 一.计算目标 ①计算经过任意不同两点的S曲线方程 ②可调节曲线平…

leetcode(双指针)283.移动零(C++)DAY3

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 示例 1: 输入…

挖矿系列:细说Python、conda 和 pip 之间的关系

继续挖矿,挖金矿! 1. Python、conda 和 pip Python、conda 和 pip 是在现代数据科学和软件开发中常用的工具,它们各自有不同的作用,但相互之间存在密切的关系: Python:是一种解释型、面向对象的高级程序设…

安卓平台valgrind交叉编译

背景 通过上次的文章valgrind跨平台调试及其问题分析,为同事们在大部分平台下进行内存问题分析提供了帮助。但是也遇到了阻塞情况:android 平台,无法交叉编译通过。大家对于编译这件事,似乎天然有一种排斥,本能的拒绝&#xff0c…

idea运行程序报错 java 程序包org.junit不存在

在 IntelliJ IDEA 中运行程序时遇到错误提示:“java: 程序包org.junit不存在”,针对这一问题,我们可以考虑以下三步来解决: 第一步:检查JUnit依赖 尽管现代项目创建时通常会默认引入JUnit依赖,但仍需检查…

创建自己的Hexo博客

目录 一、Github新建仓库二、支持环境安装Git安装Node.js安装Hexo安装 三、博客本地运行本地hexo文件初始化本地启动Hexo服务 四、博客与Github绑定建立SSH密钥,并将公钥配置到github配置Hexo与Github的联系检查github链接访问hexo生成的博客 一、Github新建仓库 登…

时序预测 | MATLAB实现基于CNN-LSTM-AdaBoost卷积长短期记忆网络结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于CNN-LSTM-AdaBoost卷积长短期记忆网络结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于CNN-LSTM-AdaBoost卷积长短期记忆网络结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于CNN-LST…

【PostgreSQL内核学习(二十五) —— (DBMS存储空间管理)】

DBMS存储空间管理 概述块(或页面)PageHeaderData 结构体HeapTupleHeaderData 结构 表空间表空间的作用:表空间和数据库关系表空间执行案例 补充 —— 模式(Schema) 声明:本文的部分内容参考了他人的文章。在…

YOLOv5独家涨点技巧:FPN涨点篇 | 高层筛选特征金字塔网络(HS-FPN),助力医学、小目标检测 | 2024年最新论文

💡💡💡本文独家改进:高层筛选特征金字塔网络(HS-FPN),能够刷选出大小目标,增强模型表达不同尺度特征的能力,助力小目标检测 💡💡💡在BCCD医学数据集和私有多个数据集实现暴力涨点。 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/category…

计算机网络原理基础

目录 前言: 1.网络发展史 2.网络通信基础 2.1IP地址 2.1.1定义 2.1.2格式 2.2端口号 2.2.1定义 2.2.2格式 2.3协议 2.3.1定义 2.3.2作用 2.3.3分层 2.4五元组 2.4.1定义 2.4.2组成 3.TCP/IP五层网络模型 3.1模型概念 3.2模型构成 3.3网络分层对应…

Redis-缓存问题及解决方案

本文已收录于专栏 《中间件合集》 目录 概念说明缓存问题缓存击穿问题描述解决方案 缓存穿透问题描述解决方案 缓存雪崩问题描述解决方案提高缓存可用性过期时间配置熔断降级 总结提升 概念说明 Redis是一个开源的内存数据库,也可以用作缓存系统。它支持多种数据结构…