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

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



缓冲流

缓冲流种类


字节缓冲输入流:BufferedlnputStream
字节缓冲输出流:BufferedOutputStream
字符缓冲输入流:BufferedReader
字符缓冲输出流:BufferedWriter

传统写入:   写1字节 → 系统调用 → 磁盘I/O → 返回
缓冲流写入: 写1字节 → 存入缓冲区(内存操作) → ... → 缓冲区满 → 批量写入磁盘

我们从实际数字上来体会缓冲流的作用

为什么缓冲区的大小一般是8192字节而不是越大越好

注意

对于字符流提升不明显,对于字符缓冲流而言关键点是两个特有的方法(字符流底层自带缓冲区)
字符缓冲流两个特有的方法
字符缓冲输入流BufferedReader:readLine()
字符缓冲输出流BufferedWriter:newLine()

缓冲流的分类

字节缓冲流

方法名称说明
public BufferedInputStream(InputStream is)
把基本流包装成高级流,提高读取数据的性能
public BufferedoutputStream(OutputStream os)
把基本流包装成高级流,提高写出数据的性能
原理:底层自带了长度为8192的缓冲区提高性能

字节缓冲输入流

细节:这里的需求是拷贝,所以同时创建了输入输出流,但是关于IO流的创建,并不是看起来那么随意,而是随用随创建,有时创建的时机不正确可能会导致文件中数据清空,因为创建输出流时如果文件存在,会自动清空里面的数据,如果不存在会自动创建

字符缓冲输入流

字符缓冲输入流BufferedReader:readLine(),可以一次读取一整行
字符缓冲输出流BufferedWriter:newLine(),跨平台的换行,不同的系统

转换流

是字符流和字节流之间的桥梁

转换流的名字是
字符转换输入流:InputStreamReader
字符转换输出流:OutputStreamWriter
转换流的作用是
指定字符集读写数据(JDK11之后已淘汰)
字节流想要使用字符流中的方法了

序列化

序列化流的小细节

当要序列化多个对象时,我们可以把对象放到集合中,反序列化时更简洁

使用对象输出流将对象保存到文件时会出现NotSerializableException异常
解决方案:需要让Javabean类实现Serializable接口 。Serializable接口里面是没有抽象方法,标记型接口一旦实现了这个接口,那么就表示当前的Student类可以被序列化

反序列化

序列化流/反序列化流的细节汇总


使用序列化流将对象写到文件时,需要让Javabean类实现Serializable接口。
否则,会出现NotSerializableException异常


序列化流写到文件中的数据是不能修改的,一旦修改就无法再次读回来了

序列化流/反序列化流的细节汇总


①使用序列化流将对象写到文件时,需要让Javabean类实现Serializable接口。
否则,会出现NotSerializableException异常


②序列化流写到文件中的数据是不能修改的,一旦修改就无法再次读回来了


序列化对象后,修改了Javabean类,再次反序列化,会不会有问题?
会出问题,会抛出InvalidclassException异常
解决方案:给Javabean类添加serialversionUID(序列号、版本号)


④如果一个对象中的某个成员变量的值不想被序列化,又该如何实现呢?
解决方案:给该成员变量加transient关键字修饰,
该关键字标记的成员变量不参与序列化过程

打印流

打印流
分类:打印流一般是指:PrintStream,PrintWriter两个类
特点1:打印流只操作文件目的地,不操作数据源
特点2:特有的写出方法可以实现,数据原样写出
例如:打印:97 文件中:97
特点3:特有的写出方法可以实现自动刷新,自动换行
打印一次数据=写出+换行+刷新

字节打印流

字符打印流

打印流与输出语句

//获取打印流的对象,此打印流在虚拟机启动的时候,由虚拟机创建,默认指向控制台
//特殊的打印流,系统中的标准输出流,是不能关闭,在系统中是唯一的。

压缩流

压缩本质:把每一个(文件/文件夹)看成ZipEntry对象放到压缩包中

Hutool

这里我们介绍一个工具包,大大提高了代码的书写效率

https://repo1.maven.org/maven2/cn/hutool/hutool-all/5.8.16/hutool-all-5.8.16.jar

下载链接附上

之后我们导入库中,就可以使用了

使用时可以参考一下链接

官网:
https://hutool.cn/
API文档:
https://apidoc.gitee.com/dromara/hutool/
中文使用文档:
https://hutool.cn/docs/#/

Read more

【代码管理】在本地使用github和gitee之后,可能存在冲突,导致再次提交代码时提示Couldn‘t connect to server

【代码管理】在本地使用github和gitee之后,可能存在冲突,导致再次提交代码时提示Couldn‘t connect to server

大家好,我是全栈小5,欢迎来到《小5讲堂》。 这是《源代码管理工具》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 * 前言 * 错误提示 * 解决方案 * 方案1:临时关闭 Git 的代理设置(推荐先尝试) * 方案2:检查并启动代理服务 * 方案3:直接使用命令行取消代理后克隆 * 方案4:检查环境变量 * 针对 Windows 系统的具体操作 * 方法1:使用 Git Bash 或命令提示符 * 方法2:检查全局 Git 配置 * 验证解决方案 * 如果您确实需要代理 * 为什么会冲突 * 1. 代理配置冲突 * 问题原因: * 典型症状: * 2. 认证信息冲突 * SSH 密钥冲突:

By Ne0inhk

【GitHub项目推荐--OpenAkita:自我进化的开源AI助手框架】⭐⭐⭐

简介 OpenAkita 是一个开源的自我进化AI助手框架,由OpenAkita团队开发并维护。该项目以其独特的“永不放弃”的设计理念而闻名——正如其名所寓意的秋田犬一样,忠诚、可靠且持续学习。与其他AI助手不同,OpenAkita在用户关闭聊天后不会忘记一切,而是能够自主学习新技能、修复自身错误,并记住用户的所有信息。框架支持3分钟快速设置,仅需一个API密钥即可启动,提供8种预设人格、6种即时通讯平台集成,甚至具备发送表情包的能力,为AI助手注入了独特的“灵魂”。 核心价值: * 自我进化:AI助手在用户睡眠时自主学习、记忆巩固和错误修复 * 人格化体验:8种预设人格(女友、管家、Jarvis等)提供沉浸式交互 * 极简部署:桌面应用程序实现3分钟从安装到对话的完整流程 * 开放生态:基于Agent Skills和MCP开放标准,支持一键技能安装 技术定位:OpenAkita填补了传统静态AI助手与动态学习系统之间的空白。它不仅仅是一个对话工具,更是一个能够随时间推移而不断进化的智能伙伴。通过将记忆管理、自我检查和技能生成等能力内置到框架核心,它为开发者提供了一个构

By Ne0inhk

3步实现GitHub全界面中文化 GitHub中文插件完全指南

3步实现GitHub全界面中文化 GitHub中文插件完全指南 【免费下载链接】github-chineseGitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese GitHub作为全球最大的代码托管平台,其英文界面常成为中文开发者的使用障碍。GitHub中文插件(GitHub Translation To Chinese)通过本地化技术,可将GitHub界面元素一键转换为中文,保留原有功能的同时降低使用门槛。本文将系统介绍这款开源工具的安装配置、核心功能及高级应用技巧,帮助开发者快速构建中文开发环境。 解析GitHub中文插件的核心价值 GitHub中文插件采用轻量级用户脚本架构,通过三大核心优势解决英文界面痛点: 无缝集成的本地化体验 插件在不改变GitHub原有功能布局的前提下,将界面文本替换为精准的中文表述。从导航菜单到按钮文本,从提示信息到帮助文档,实现全界面无死角中文化。这种非侵入式设计确保用户

By Ne0inhk
OpenCode 免费使用 Kimi K2.5 完整指南:国产最强开源模型零成本体验

OpenCode 免费使用 Kimi K2.5 完整指南:国产最强开源模型零成本体验

什么是 Kimi K2.5? Kimi K2.5 是月之暗面 (Moonshot AI) 于 2026 年 1 月发布的开源多模态大模型,总参数量达 1 万亿,激活参数 320 亿,在多项基准测试中超越 Claude Opus 4.5,尤其在编程和 Agent 任务上表现卓越。 OpenCode 作为最热门的开源 AI 编程助手,现已正式支持 Kimi K2.5。更令人兴奋的是,通过多种渠道,你可以限时免费体验这款国产最强开源模型。本文将详细介绍配置方法和使用技巧。 为什么选择 Kimi K2.5? 在深入配置之前,先了解 Kimi K2.5

By Ne0inhk