Java 日看一类(52)之IO包中的SequenceInputStream流

代码解读:使用Stable Diffusion完成相似图像生成任务 作为内容生产重要的一部分,生成相似图像是一项有意义的工作,例如很多内容创作分享平台单纯依赖用户贡献的图片已经不够了,最省力的方法就是利用已有的图片生成相似的图片作为补充。这篇博客详细解读基于Stable Diffusion生成相似图片的原理和代码。 阅读详情

该类继承自InputStream

引入了如下包

import java.io.InputStream;
import java.util.Enumeration;
import java.util.Vector;



该类的类头注释如下:

/**
 * A <code>SequenceInputStream</code> represents
 * the logical concatenation of other input
 * streams. It starts out with an ordered
 * collection of input streams and reads from
 * the first one until end of file is reached,
 * whereupon it reads from the second one,
 * and so on, until end of file is reached
 * on the last of the contained input streams.
 *
 * @author  Author van Hoff
 * @since   JDK1.0
 */

大意如下:

SequenceInputStream相当于是其他输入流在逻辑上的队列表达形式

他开始输出从第一个输入流读取的数据,直到eof出现

然后从开始输出从第二个输入流中读取的数据以此为例,直到最后一个输入流的eof出现



该类含有以下的成员变量:

内嵌的有序输入流序列

Enumeration<? extends InputStream> e;

作为输出到程序的输入接口的输入流

InputStream in;


该类含有如下的成员方法:

构造方法:(提供输入流队列

public SequenceInputStream(Enumeration<? extends InputStream> e) {
    this.e = e;
    try {
        nextStream();//尝试读取第一个输入流
    } catch (IOException ex) {
        // This should never happen
        throw new Error("panic");//看来是写了错代码,或者是进行了修改,永远不可能抛出IO异常
    }
}

构造方法:(提供两个输入流

public SequenceInputStream(InputStream s1, InputStream s2) {
    Vector<InputStream> v = new Vector<>(2);//使用容器装载

    v.addElement(s1);
    v.addElement(s2);
    e = v.elements();//把容器转化为枚举集合
    try {
        nextStream();
    } catch (IOException ex) {
        // This should never happen
        throw new Error("panic");
    }
}

读取下一个队列中的输入流

final void nextStream() throws IOException {
    if (in != null) {//先关闭当前流
        in.close();
    }

    if (e.hasMoreElements()) {//还有剩余的元素 
        in = (InputStream) e.nextElement();//将下一个输入流绑定到当前输入接口上
        if (in == null)
            throw new NullPointerException();
    }
    else in = null;//关闭输入接口

}

返回当前位于接口处的流中的最大可无阻塞读取的字节数

public int available() throws IOException {
    if (in == null) {
        return 0; // no way to signal EOF from available()
    }
    return in.available();
}

从当前输入接口流中读取一个字节(返回读取字节的int值

public int read() throws IOException {
    while (in != null) {//输入接口未关闭
        int c = in.read();
        if (c != -1) {//字节流还有数据
            return c;
        }
        nextStream();//切换下一个
    }
    return -1;
}

读取字节数据写入数组(返回实际读取长度

public int read(byte b[], int off, int len) throws IOException {
    if (in == null) {
        return -1;
    } else if (b == null) {
        throw new NullPointerException();
    } else if (off < 0 || len < 0 || len > b.length - off) {
        throw new IndexOutOfBoundsException();
    } else if (len == 0) {
        return 0;
    }
    do {
        int n = in.read(b, off, len);
        if (n > 0) {//读取成功
            return n;
        }
        nextStream();
    } while (in != null);//输入接口未关闭
    return -1;
}

关闭当前流并释放资源(通过重复调用nextStream来跳过并释放流资源

public void close() throws IOException {
    do {
        nextStream();
    } while (in != null);
}




该类十分简单,如果了解InputStream的基类以及子类特性的话,该类基本看一下就懂了。

相当于把多个输入流整合成为一个进行统一处理,在该类中只负责切换各个输入流即可。

10天冲刺国自然基金!用这套实战AI提示词指令教程,助你中标率翻倍!亲测DeepSeek和ChatGPT不好用 虽然以上国自然提示词指令经过反复实测,但并不是万能无脑帮你搞定所有,大模型AI的特性是你专业领域能力越强,它的智商表现就会更加强大,通过以上提示词教程的使用,大大提升中标概率是肯定的。还有就是大模型的使用上,不是市面上大家都说好的就一定适用,目前来看,Gemini和Claude的两个模型是非常适合国自然本子的修改的。在使用大模型进行国自然本子撰写修改时,首先是角色的设定,然后是目标和背景的描述,好用的提示词指令都是要经过无数次的实测,比对输出结果后又反复调整,达到最佳的效果状态的提示词指令。 阅读详情

相关推荐

Arm Neoverse CMN-700 QoS与PrefetchTarget架构解析

在现代多核处理器系统中,内存访问性能优化是提升整体效能的关键。QoS(服务质量)技术通过优先级调控机制,确保关键任务获得更高的缓存带宽和内存访问权限。PrefetchTarget作为预取技术的一种实现,能够显著降低内存访问延迟,特别适用于AI训练和数据库系统等高性能计算场景。Arm Neoverse CMN-700通过RN SAM模块实现了硬件级的地址范围检测和优先级调控,支持最多8个独立内存区域的QoS配置。测试数据显示,合理配置QoS可使关键任务延迟降低40%,而PrefetchTarget技术则能减少

weixin_36197669的博客 316

Java笔记(二十八)……IO流下 IO包中其他常用类以及编码表问题

PrintWriter打印流 Writer的子类,既可以接收字符流,也可以接收字节流,还可以接收文件名或者文件对象,非常方便 同时,还可以设置自动刷新以及保持原有格式写入各种文本类型的print方法 PrintWriter的小例子:打印字符录入的大写 1: //读取键盘录入,打印大写 2: private static void printWriterMethod() thr...

aev57372的博客 245

PyCharm中Pyvips配置避坑指南:为什么pip安装后import还是报错?

本文详细解析了在PyCharm中配置Pyvips时,即使pip安装成功,import仍报错的根本原因。核心在于Pyvips依赖的libvips原生库未正确配置环境变量。文章提供了从下载libvips、配置Windows系统PATH到PyCharm项目级设置的完整避坑指南,并对比了三种配置策略,帮助开发者彻底解决DLL加载失败问题。

bush的博客 209

javaday52_IO流_打印流PrintStream和序列流SequenceInputStream

package java_Studing_day52_IO流12_PrintStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintStream; 一,printStream public class printStreamDemo

叶巨岩的博客 359

BK3296蓝牙音频SoC深度评测:如何用这颗芯片打造超低功耗TWS耳机?

本文深度评测BK3296蓝牙音频SoC在TWS耳机中的应用,重点解析其22nm工艺带来的超低功耗优势(A2DP模式仅2.8mA)和3×3mm封装设计。通过芯片架构分析、双麦降噪调优及开发套件使用指南,为工程师提供打造高性能TWS耳机的完整解决方案,显著提升续航和音频质量。

rice5的博客 659

SCU【C】程序设计基础期末安全项目lab2-Deadbeef-writeup(附题目&源码)

项目名称(本质:栈溢出攻击)【源码在文首】和lab1一样,此题又是美国卡耐基梅隆大学的平时作业哈哈哈! 项目要求是把栈溢出,强行更改函数返回值,输出0xdeadbeef。

2301_79586491的博客 1545

Java中的IO流

一、InputStream和OutputSteaminputStream常用方法: 图2OutputStream常用方法: 图3二、输入输出流应用1、文件输入输出流FileInputStream:在生成FileInputStream类的对象时,若指定文件找不到,会抛出FileNotFoundException,必须捕获或者声明抛出。FileInputStream类的构造函数: 图...

lvlei19911108的博客 86

第42篇FEDGLOSS算法BEYOND LOCAL SHARPNESS:COMMUNICATION-EFFICIENT GLOBALSHARPNESS-AWARE MINIMIZATIONFOR

:用上一轮伪梯度最小化锐度,获取与全局损失最相关的几何信息,引导全局优化趋向更平坦的最小值。效果对比分析:FEDGLOss。

weixin_74009895的博客 526

IO流(其他流):数据输入输出流;内存操作流;打印流;序列化与反序列化流;随机访问流;Properties

文章目录IO流(其他流)一、数据输入输出流1、特有属性2、特有方法演示二、内存操作流1、操作字节数组的内存操作流2、操作字符数组的内存操作流3、操作字符串的内存操作流程三、打印流1、字符打印流2、字节打印流3、使用字节打印流和Scanner类复制文本文件四、序列化与反序列化流演示五、随机访问流1、演示2、例题:将一个文件复制三遍六、Properties演示 IO流(其他流) 一、数据输入输出流 1...

y_Engineer的博客 647

SAP Fiori 个性化数据持久化实战:从 Personalizer 到 Variant 的完整设计思路

摘要:SAPUI5的Personalization服务用于持久化用户界面交互偏好(如表格列顺序、筛选条件),而非业务数据。它提供两种模式:Direct Mode适合单一实体存储,Container Mode支持多实体和变体管理。开发时需注意数据存储位置差异(本地调试用local storage,生产环境由前端服务器处理),避免与业务数据或Bookmark服务混淆。典型应用场景包括表格布局保存和查询方案管理,需根据需求选择模式。该服务能有效提升Fiori应用的用户体验连续性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 131

【异常】DeepSeek API HTTP 401 认证失败错误完整排查与解决方案

摘要:本文针对DeepSeek API开发中的HTTP 401认证失败错误进行深度解析,指出该错误属于不可重试的认证类问题。文章首先拆解错误日志关键字段,区分401与其他API错误的本质差异。随后提供优先级排序的全链路解决方案:1)检查API密钥有效性;2)规范请求头认证格式;3)排查账户权限状态;4)验证请求环境配置。最后建议通过新建测试密钥、使用官方示例代码或联系技术支持进行兜底处理。全文采用技术脱敏处理,为开发者提供系统性的401错误排查指南。(149字)

奶爸的编程之路,也就一周冷个三天 1536

[19/04/03-星期三] IO技术_其它流(RandomAccessFile 随机访问流,SequenceInputStream 合并流)...

一、RandomAccessFile 随机访问流 【版本1】 1 /* 2 *RandomAccessFile 所谓随机读取就是 指定位置开始或指定位置结束 的读取写入文件 3 * 实现文件的拆分与合并 模拟下载的原理 4 */ 5 package cn.sxt.test; 6 7 import java.io.File; 8 import java...

weixin_30235225的博客 113

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IO包中的其他类

查看各对象API文档 打印流 PrintWriter PrintStream 序列流:对多个流进行排列合并 SequenceInputStream 1 public static void main(String[] args) throws IOException { 2 3 4 /* 5 * 需求:将...

weixin_30869099的博客 60

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

java_IO_Properties,SequenceInputStream,文件切割以及合并。

1 package day08; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8...

weixin_30540691的博客 167

java IO流

1 package com.sun.io; 2 3 import java.io.BufferedOutputStream; 4 import java.io.File; 5 import java.io.FileInputStream; 6 import java.io.FileOutputStream; 7 import java.io.IOExc...

weixin_33905756的博客 82

java基础48 IO流技术(序列流)

本文知识点目录: 1、SequenceInputStream序列流的步骤 2、实例 3、附录(音乐的切割与合并) 1、SequenceInputStream序列流的步骤 1.找到目标文件 2.建立数据输入输出通道 3.建立序列流对象 4.关闭资源 2、实例 1 package com....

weixin_30729609的博客 571

IO扩展

Properties 简单的配置文件==Properties=Map+IO 复杂的用XML ==》工具dom4j 1 package io; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import ...

a5511596的博客 675

Java 标准 I/O 流编程一览笔录( 下 )

转自:https://mp.weixin.qq.com/s?__biz=MjM5NzMyMjAwMA==&mid=2651479115&idx=3&sn=f4ed7aab2ad71adaf5a9adeda62218b3&chksm=bd2530348a52b922f6784613467c935a7b0e8799ca45d0aeba47e99050ba8be2e09fb780933a&mpshare

iCoding91 362

IO流_文件切割与合并(带配置信息)

在切割文件的时候应该生成一个记录文件信息的文件,以便在以后合并文件的时候知道这个文件原来的文件名和记录文件切割完后生成了多少个切割文件 1 import java.io.File; 2 import java.io.FileInputStream; 3 import java.io.FileOutputStream; 4 import java.io.IOExcept...

dbp5156的博客 85

IO流05--毕向东JAVA基础教程视频学习笔记

Day20 10 创建java文件列表11 Properties简述12 Properties存取13 Properties存取配置文件14 Properties练习15 PrintWriter16 合并流17 切割文件   10 创建java文件列表 练习:将一个指定目录下的java文件的绝对路径,存储到一个文本文件中,建立一个java文件列表的文件。 思路:1.对指定的目录进行递归2

Brighten的的博客 681

Java基础知识_毕向东_Java基础视频教程笔记(19-21 IO流)

18天-06-IO流   字节流和字符流 字节流两个基类: InputStream,FileInputStream,BufferedInputStream OutputStream,FileOutputStream,BufferedOutputStream PrintStream (打印字节流,带编码格式) 字符流两个基类: Reader,FileReader,BufferedRe

nginxs的博客 320

Java: IO 学习小结

源:   键盘 System.in  硬盘 FileStream  内存 ArrayStream 目的:   控制台 System.out  硬盘 FileStream  内存 ArrayStream 处理大文件或者多线程下载\上传     RandomAccessFile 或者内存映射文件 方便对对象的永久化存储和调用   ObjectStream 方便操作打印流   Prin...

weixin_30873847的博客 82

合并mp3, vector,Enumeration,SequenceInputStream,FileFilter,匿名内部类.

1 package test; 2 3 import java.io.*; 4 import java.util.*; 5 6 public class Test20 7 { 8 public static void main(String[] args) throws Exception 9 { 10 // 从给定目录 ...

weixin_30618985的博客 88
上一篇: Java 日看一类(51)之IO包中的Reader类
下一篇: Java 日看一类(53)之IO包中的SerialCallbackContext类
wyf95278
博客等级 码龄10年 38粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值