java基础-InputStream 类
InputStream是 Java 中所有字节输入流的抽象基类位于java.io包中。它定义了读取字节数据的基本方法。一、核心特性抽象类- 不能直接实例化需要通过子类实现字节流- 以字节byte为单位读取数据单字节读取- 最基本的读取单位是单个字节0-255流式访问- 顺序读取通常不支持随机访问二、常用方法// 基本读取方法 int read() // 读取单个字节返回0-255-1表示结束 int read(byte[] b) // 读取到字节数组返回实际读取字节数 int read(byte[] b, int off, int len) // 读取指定长度到数组的指定位置 // 其他重要方法 long skip(long n) // 跳过指定字节数 int available() // 返回可读取的字节数估计值 void close() // 关闭流释放资源 void mark(int readlimit) // 标记当前位置 void reset() // 重置到标记位置 boolean markSupported() // 是否支持标记/重置三、主要子类1. 文件输入流FileInputStream fis new FileInputStream(file.txt);2. 字节数组输入流ByteArrayInputStream bais new ByteArrayInputStream(byteArray);3. 缓冲输入流装饰器BufferedInputStream bis new BufferedInputStream(inputStream);4. 对象输入流反序列化ObjectInputStream ois new ObjectInputStream(inputStream);5. 其他子类PipedInputStream- 管道流SequenceInputStream- 序列流FilterInputStream- 过滤流基类DataInputStream- 读取基本数据类型四、使用示例示例1基本读取try (InputStream is new FileInputStream(test.txt)) { int data; while ((data is.read()) ! -1) { System.out.print((char) data); } } catch (IOException e) { e.printStackTrace(); }示例2使用缓冲区读取try (InputStream is new FileInputStream(largefile.bin); BufferedInputStream bis new BufferedInputStream(is)) { byte[] buffer new byte[1024]; int bytesRead; while ((bytesRead bis.read(buffer)) ! -1) { // 处理读取的数据 processData(buffer, bytesRead); } } catch (IOException e) { e.printStackTrace(); }示例3读取到字节数组public static byte[] readAllBytes(InputStream inputStream) throws IOException { ByteArrayOutputStream buffer new ByteArrayOutputStream(); byte[] data new byte[4096]; int bytesRead; while ((bytesRead inputStream.read(data, 0, data.length)) ! -1) { buffer.write(data, 0, bytesRead); } return buffer.toByteArray(); }五、重要注意事项1.资源管理// 推荐使用 try-with-resources try (InputStream is new FileInputStream(file.txt)) { // 使用流 } // 自动关闭2.读取性能单字节读取性能差建议使用缓冲区BufferedInputStream可以显著提升性能合适的缓冲区大小通常4KB-8KB3.异常处理try { // 读取操作 } catch (IOException e) { // 处理IO异常 } finally { // 确保关闭资源try-with-resources更优 }4.标记/重置限制不是所有流都支持mark()和reset()标记有读取限制readlimit参数调用reset()前必须先调用mark()六、与 Reader 的区别特性InputStreamReader单位字节byte字符char编码无编码概念使用字符编码范围0-255Unicode字符子类FileInputStream等FileReader等七、最佳实践始终关闭流- 使用 try-with-resources使用缓冲区- 特别是对于文件或网络流检查返回值-read()方法可能读取不到预期字节数考虑使用 NIO- 对于高性能需求考虑Files.newInputStream()处理中断- 考虑使用Thread.interrupted()检查八、Java 9 新增方法// Java 9 新增 byte[] readAllBytes() // 读取所有字节 long transferTo(OutputStream out) // 直接传输到输出流 // Java 11 新增 byte[] readNBytes(int len) // 精确读取指定数量的字节

相关新闻

基于springboot的大学生志愿服务活动管理系统(源码+论文+部署+安装)

基于springboot的大学生志愿服务活动管理系统(源码+论文+部署+安装)

感兴趣的可以先收藏起来,还有在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,我会一一回复,希望可以帮到大家。一、程序背景随着社会发展,志愿服务在各领域作用愈发凸显,大学生作为志愿服务主力…

2026/7/9 17:13:51 阅读更多 →
毕设 stm32的火灾监控与可视化系统(源码+硬件+论文)

毕设 stm32的火灾监控与可视化系统(源码+硬件+论文)

文章目录 0 前言1 主要功能2 硬件设计(原理图)3 核心软件设计4 实现效果5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉…

2026/7/9 15:39:10 阅读更多 →
做自媒体数据复盘工具,导入平台播放量,点赞量,评论量,涨粉数,按日/周统计数据变化,分析高赞作品共性,生成复盘报告。

做自媒体数据复盘工具,导入平台播放量,点赞量,评论量,涨粉数,按日/周统计数据变化,分析高赞作品共性,生成复盘报告。

自媒体数据复盘工具 - 全栈开发实践 1. 实际应用场景描述 本工具专为短视频创作者、公众号作者、播客主播、直播达人等自媒体从业者设计,提供全方位的数据分析和复盘服务。随着自媒体行业的快速发展,内容创作者面临着激烈的市场竞争和用户注意力分散的挑…

2026/7/9 9:41:19 阅读更多 →

最新新闻

ChatBI选型对比:从意图识别到SQL修复,六个维度打分决定是否值得投产

ChatBI选型对比:从意图识别到SQL修复,六个维度打分决定是否值得投产

导语 选型 ChatBI,是一件比选型传统 BI 更容易踩坑的事。传统 BI 的能力边界相对清晰——数据接入、建模、可视化、权限,做过 POC 基本能看出成色。但 ChatBI 不一样:它的核心能力是"用自然语言把业务问题翻译成可执行的分析"&…

2026/7/10 3:12:24 阅读更多 →
[AI]提示词工程

[AI]提示词工程

提示词工程规范体系 一、核心维度总览 维度作用你的场景权重角色定义锁定模型身份与专业边界⭐⭐⭐⭐⭐上下文注入提供背景信息与约束条件⭐⭐⭐⭐⭐任务指令明确输出目标与执行步骤⭐⭐⭐⭐⭐输出格式强制结构化、可解析⭐⭐⭐⭐⭐质量约束标注来源、置信度、边界条件⭐⭐⭐…

2026/7/10 3:10:23 阅读更多 →
STM32上拉下拉电阻配置与DTH-08传感器接口实践

STM32上拉下拉电阻配置与DTH-08传感器接口实践

1. 信号上拉与下拉的基础概念解析在数字电路设计中,信号线的上拉(Pull-up)和下拉(Pull-down)是两种常见的电路配置方式,它们直接影响信号的稳定性和抗干扰能力。上拉电阻将信号线通过电阻连接到电源电压&am…

2026/7/10 3:08:23 阅读更多 →
猫抓插件:浏览器资源嗅探的免费开源解决方案

猫抓插件:浏览器资源嗅探的免费开源解决方案

猫抓插件:浏览器资源嗅探的免费开源解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法保存网页视频而烦恼吗&#xff…

2026/7/10 3:06:21 阅读更多 →
2026年企业微信客户群发怎么选?亲测4款主流工具横评,新手收藏这一篇就够了

2026年企业微信客户群发怎么选?亲测4款主流工具横评,新手收藏这一篇就够了

📌 AI导读:本文旨在帮助你在2026年选择合适的企业微信客户群发工具。我们将从操作门槛、使用效率、体验细节和适用场景四个维度,对市面上4款主流工具进行客观对比。这些工具各有侧重:有的侧重基础功能与移动端体验,有的…

2026/7/10 3:04:20 阅读更多 →
SGM41511 电源路径管理芯片实战:3A 单节锂电充电与 NVDC 架构解析

SGM41511 电源路径管理芯片实战:3A 单节锂电充电与 NVDC 架构解析

SGM41511 电源路径管理芯片实战:3A 单节锂电充电与 NVDC 架构解析在便携式设备设计中,电源管理系统的效率与可靠性直接决定了用户体验。当用户插入充电器时,设备能否立即开机?充电过程中系统负载突变会导致充电中断吗?…

2026/7/10 3:02:20 阅读更多 →

日新闻

STM32与LTC1864高精度ADC的SPI通信实现

STM32与LTC1864高精度ADC的SPI通信实现

1. 项目背景与核心需求在工业控制和嵌入式系统开发中,模拟信号与数字系统的无缝集成一直是工程师面临的关键挑战。LTC1864作为一款16位高精度ADC转换器,配合STM32F101ZG这类主流微控制器,能够构建高性能的模拟信号采集系统。这种组合特别适合…

2026/7/10 0:03:07 阅读更多 →
猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为网页视频无法下载而烦恼吗&am…

2026/7/10 0:05:09 阅读更多 →
直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

1. 直流有刷电机驱动方案概述在工业自动化和消费电子领域,直流有刷电机因其结构简单、控制方便、成本低廉等优势,仍然是许多应用场景的首选驱动方案。TC78H653FTG作为东芝推出的新一代H桥驱动器,与MKV46F256VLH16微控制器配合使用&#xff0c…

2026/7/10 0:05:09 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/9 21:41:05 阅读更多 →

月新闻