Java中字节 输入流一次读取多个字节代码实现和原理-图文分析

104-字节输入流一次读取多个字节的方法 字节输入流一次读取多个字节的方法 int read(byte[] b) len记录的是有效字节个数 明确两件事情: 1.方法的参数byte[] byte数组的作用? 缓冲作用,存储每次读取到的多个字节 数组长度一般定义为1024(1KB 或者1024的整数倍) 2.方法的返回值int又是什么 记录的是有效字节个数 String类的构造方法: String(byte[] bytes):把字节数组转换为字符串 String(byte[] bytes,int offset,int length);把字节数组. 阅读详情

字节输入流一次读取多个字节的方法

int read​(byte[] b) 从该输入流读取最多 b.length个字节的数据到一个字节数组

明确两件事情:

1、方法的参数byte[] 的作用

                      起到缓冲作用,存储每次读取到的多个字节

                       数组的长度定义为1024(1kb)或者是1024的整数倍

2、方法的返回值int是什么?

                      每次读取的有效字节个数

String类的构造方法之一

String​(byte[] bytes)

通过使用平台的默认字符集解码指定的字节数组来构造新的 String 。

作用:把字节数组转换为字符串

String类的构造方法之二

String​(byte[] bytes, int offset, int length)

通过使用平台的默认字符集解码指定的字节子阵列来构造新的 String 。

 作用:把字节数组的一部分转换为字符串

构造参数的作用

int offset:数组的开始索引

int length:转换的字节个数

============

约定文件路径及文件内容,如图:

字节 输入流一次读取多个字节

package com.baidu.字节输入输出流;



import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;

public class InputStream02 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("F:\\develop\\d.txt");
        byte[] bytes1 = new byte[2];
        int read = fis.read(bytes1);
        System.out.println(read);//打印2 每次打印读取的个数是2
        System.out.println(Arrays.toString(bytes1));//[65, 66]
        System.out.println(new String(bytes1));//AB


        read = fis.read(bytes1);
        System.out.println(read);
        System.out.println(new String(bytes1));


        read = fis.read(bytes1);
        System.out.println(read);//读到1 ,这说明读到了一个有效字节数
        System.out.println(new String(bytes1));


        read = fis.read(bytes1);
        System.out.println(read);//读到-1 ,这说明读到了结束标记
        System.out.println(new String(bytes1));//因为我们定义的是两个字节数组,所以即使返回-1也必然是返回两个字母

        fis.close();
    }
}

程序结果:

 

发现以上读取的是一个重复的过程,可以使用循环优化

不知道文件有多少字节,可以使用while循环

while循环结束条件,读取到-1结束

字节 输入流一次读取多个字节(优化升级,使用while循环)String​(byte[] bytes)


Java中字节 输入流一次读取多个字节代码实现和原理-图文分析
31/100
Attsky


<没有设置>
package com.baidu.字节输入输出流;



import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;

public class InputStream02 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("F:\\develop\\d.txt");


        byte[] bytes = new byte[1024];//存储读取到的多少字节
        int len = 0;
        while((len=fis.read(bytes))!=-1){
            System.out.println(bytes);//可打印数组的地址值,这个程序中没有意义
            System.out.println(new String(bytes));//转换成字符串,用到了String的构造方法,匿名

        }
       

        //释放资源
        fis.close();
    }
}

 

 字节 输入流一次读取多个字节(优化升级,使用while循环)String​(byte[] bytes, int offset, int length)

package com.baidu.字节输入输出流;



import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;

public class InputStream02 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("F:\\develop\\d.txt");


        byte[] bytes = new byte[1024];//存储读取到的多少字节

       int len = 0;
        while((len=fis.read(bytes))!=-1){
            System.out.println(bytes);//可打印数组的地址值,这个程序中没有意义
            System.out.println(new String(bytes,0,len));//转换成字符串,用到了String的构造方法,匿名

        }

        //释放资源
        fis.close();
    }
}

数组的默认值是0

数组的下标是从1开始的

 

数组:缓存作用,存储读到的多个字节

new byte[5]:一次读取5个字节,可提高读取效率

 

 

Java实现URL大文件转字节流的高效率算法 Java实现URL大文件转字节流的高效率算法Java实现URL大文件转字节流的高效率算法Java实现URL大文件转字节流的高效率算法Java实现URL大文件转字节流的高效率算法Java实现URL大文件转字节流的高效率算法Java实现URL大文件转字节流的高效率算法Java实现URL大文件转字节流的高效率算法Java实现URL大文件转字节流的高效率算法Java实现URL大文件转字节流的高效率算法Java实现URL大文件转字节流的高效率算法 阅读详情

相关推荐

别再只用CANape测数据了!手把手教你用ASAP2 Studio编辑A2L文件(附MAP文件更新避坑指南)

本文深入探讨ASAP2 Studio在ECU开发中的高阶应用,特别是如何利用其编辑A2L文件并同步更新MAP文件,提升测量标定效率。文章详细解析了ASAP2 Studio的双向同步能力、MAP文件更新全流程及变量管理技巧,帮助工程师避免常见错误,优化工作流程。

weixin_26833939的博客 507

String(byte[] bytes, int offset, int length)

public String(byte[] bytes, int offset, int length) 通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。 参数: bytes:要解码为字符的 byte               offset: 要解码的第一个 byte 的索引               length: 要解码的 byte 数 的长度

斜阳雨陌 1万+

VI恒流源原理详细分析(0~10V转0/4~20mA)

但是此电阻也不能无限增加,首先我们所列方程均是基于运放虚短虚断的假设,此假设又是基于运放输入阻抗无穷大,输出阻抗无穷小的前提条件,然而实际的运放并非理想运放,对于TL082IDR这款运放,其Rid(Common-mode input resistance)典型值为1TΩ,以此来看感觉1MΩ确实还不是很大,但是还有另一个影响因素需要考虑,那就是电路的抗干扰能力,原则上,电阻越大受到外部干扰的可能性越大。也就是实现Uin 0~10V变化时对应Iout 0~20mA的一个线性对应关系。

IOTBOT的博客 2898

用同一个文件流读取同一个文件两次所需要做的操作

关于输入流的问题,能不能用一个输入流两次打开一个同一个文件 我声明了一个输入流,用它打开一个文件之后,进行一系列的操作,然后把这个文件关闭,重新打开以便进行下一个操作。 可是这个时候总是会报错,说文件打开失败。 我想请问一下这是什么原因? 是不是不能用一个输入流两次打开一个同一个文件啊? 谢谢 搜索更多相关主题的帖子:文件  输入   2007-04-24 2

qwezhaohaihong 3762

MEMS惯性传感器关键参数解析与误差优化策略

本文深入解析了MEMS惯性传感器的关键性能参数,如零偏稳定性、噪声与随机游走、振动整流误差等,并阐述了这些误差如何导致设备导航漂移、姿态不稳等问题。文章重点探讨了从硬件选型、系统设计到校准补偿、算法融合(如卡尔曼滤波)以及温度补偿等实战优化策略,旨在帮助工程师有效提升自动驾驶、无人机等设备的测量精度与稳定性。

weixin_28363123的博客 414

东方通TongWeb虚拟主机配置全流程:从创建到应用部署的保姆级教程

本文提供东方通TongWeb虚拟主机从创建、HTTP通道配置到应用部署的完整实战指南。重点解析虚拟主机的逻辑隔离价值、通道参数调优原理及企业级多应用部署架构,并涵盖常见报错排查与性能优化建议,旨在帮助运维和开发人员高效、稳定地完成应用系统部署。

oil88的博客 530

Java中三种方法重复使用同一输入流

在工作遇到一种情况,需要对同一文件数据进行多次重复读取,我们流像一个管道一样,数据一旦流过去,就无法被再次使用。例如我需要对同一张电子发票,通过定位多次读取相关信息。在工作中还遇到问题:需要对读入的文件 (MultipartFile) 计算 MD5,同时又需要将其上传到 S3上,即需要对同一输入流进行多次重复读取操作,但是按照流本身所代表的抽象含义,数据一旦流过去,就无法被再次使用。......

争做优秀java技术博客! 3530

从原理到实践:手把手教你用XY2-100协议控制激光振镜(含引脚定义图)

本文详细解析了XY2-100协议在激光振镜控制中的应用,从硬件接口定义到时序分析,再到Verilog硬件逻辑实现,提供了完整的开发指南。通过实际案例和优化策略,帮助开发者快速掌握高精度激光振镜控制技术,提升加工质量和效率。

weixin_30505225的博客 401

java同时调用两个带有io流的方法报错

萌新一个,自己在写一个银行账户系统练习,写了一个注册账户的方法和一个登陆账户的方法,分别在两个方法中各自使用两组输入输出流。 因为想注册完账户直接提示登陆,所以连续调用两个方法,发现运行完第一个方法就报错Stream closed,经过反复尝试发现只要不把先运行的方法的System.in输入流关闭就好了,个人理解这是两个方法的两组流是分开的,第一组输入流关闭,在第二方法运行时开头又打开了一个新的输...

ZuiGelzr的博客 385

高精地图语义分割标注

什么是语义分割?语义分割与目标检测的区别?语义分割的关键应用场景有哪些?高精地图语义分割标注的难点?

weixin_52509513的博客 1645

基于STM32设计的猪舍养殖的监控系统_325

本课题基于STM32单片机,设计一款能够实时监测猪舍环境的智能监控系统。该系统能够通过温湿度、空气质量、光照强度等传感器实时监测猪舍的环境,并能够通过自动化控制设备(如风扇、照明灯、消毒喷雾等)调节环境参数,确保养殖环境的适宜性。同时,系统还支持通过ESP8266模块实现数据上传与远程控制,使养殖管理者能够通过手机APP或计算机远程监控和控制猪舍环境。

408

Java中字节输入流一次读取一个字节的原理--图文分析

字节输入流的使用步骤(重点): 1、创建FileInputStream对象,构造方法中绑定要读取的数据源 2、使用FileInputStream对象中的方法read,读取文件 3、释放资源

崔凯洋的博客 365

【即插即用模块】注意力篇 | TGRS 2025 | SCPP:独家复现!三特征多尺度注意力融合,涨点必备!

摘要:SCPP(Scale-aware Pyramid Pooling)是一种创新的多尺度特征融合模块,专为U型网络瓶颈设计。它通过局部特征提取(1×1卷积)、多尺度膨胀卷积(1/3/5膨胀率分支)和全局特征聚合(全局平均池化)三重结构,结合SE通道注意力机制和自适应加权融合,显著提升特征表达能力。实验表明,SCPP能有效解决边缘模糊和错误检测问题,在遥感图像分割等任务中表现优异。该模块支持即插即用,适用于各类需要多尺度特征增强的视觉任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 940

图文精讲(二)——Java中I/O流——字节流具体代码实现——内容的读写

字节输入流: package liu; //读 import java.io.*; //返回的是ASSIC值 public class ZiJieShuRuLiu { public static void main(String[] args) throws IOException { System.out.println("【1】============================================================"); File f = new Fi.

hey,欢迎浏览我的博客,希望能给你提供帮助。 204

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

字节流读数据(一次读一个字节数组数据)(需要强制转换)(重点)

所用到的方法 int read(byte[] b) 从该输入流读取最多 b.length个字节的数据为字节数组 String(byte[] bytes, int offset, int length) 通过使用平台的默认字符集解码指定的字节子阵列来构造新的 String

o676448的博客 485

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java读取bmp图像_JAVA实现对BMP图片的读取

BMP图片格式,是windows自带的一个图片格式,(*bmp),在windows的系统下都支持这种格式,bmp格式与设备无关的位图(DIB)格式,BMP简称位图,BMP的原始数据是没有经过压缩处理的 占用的空间比其它格式的图片要大BMP由四部分组成 ,位图文件头 , 位图信息头 , 颜色 , 图像数据区BMP图片是三个字节为一个颜色保存,将字节拼接为int需要使用位移来做位图文件头 (12个...

weixin_33511821的博客 1570

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IO流 字节流读写 使用字节输入流读数据

IO流 IO :输入输出流(input/output) 流: 是文件数据在计算机中传输的一种形式 常见的操作:文件的上传 下载 文件的复制 IO流中的输入输出 是相对于程序而言:将外部存储设备中的文件读入到程序中,则为输入 ;将程序中的数据 输入出到外部存储设备 称为输出 IO流的分类: 按照数据的流向: 输入流(读) 输出流(写) 按照数据的单位: 字节流(bit) 字符流(char) IO流的基本: 字节输入流 字节输出流 字符输入流 字符输出流 字节流和字符流的使用场景: 字符

weixin_44283061的博客 354

字节流读数据(一次读一个字节数据)(需要强制转换)(对汉字读取会出现乱码)

使用字节输入流读数据的步骤 1.创建字节输入流对象 2.调用字节输入流对象的数据方法(while) 3.释放资源 int read(); 从该输入流读取一个字节的数据。

o676448的博客 379

java读取bmp图片像素数据_JAVA实现对BMP图片的读取

BMP图片格式,是windows自带的一个图片格式,(*bmp),在windows的系统下都支持这种格式,bmp格式与设备无关的位图(DIB)格式,BMP简称位图,BMP的原始数据是没有经过压缩处理的 占用的空间比其它格式的图片要大BMP由四部分组成 ,位图文件头 , 位图信息头 , 颜色 , 图像数据区BMP图片是三个字节为一个颜色保存,将字节拼接为int需要使用位移来做位图文件头 (12个...

weixin_42503446的博客 553

图文精讲(一)——Java中I/O流——字节流(概述、读写文件、文件的拷贝、缓冲区、缓冲流)

I/O流概述: 结构: Java中的I/O流主要定义在java.io包中,该包下定义了很多类,其中有4个类为流的顶级类,分别为InputStream和OutputStream,Reader和Writer。 说明: InputStream和OutPutStream是字节流,而Reader和Writer是字符流; InputStream和Reader是输入流,而OutPutStream和Writer是输出流; 图中的4个顶级类都是抽象类,并且是所有流类型的父类。 图示: 字节流概述: 定义: 在计算机.

hey,欢迎浏览我的博客,希望能给你提供帮助。 953

java读取bmp图片像素数据_java读取bmp位图

BMP由四部分组成 ,位图文件头 , 位图信息头 , 颜色 , 图像数据区BMP图片是三个字节为一个颜色保存,将字节拼接为int需要使用位移来做位图文件头 (12个字节):0000-0001:文件标识,为字母ASCII码“BM”,42 4D。0002-0005:整个文件大小,单位字节。0006-0009:这个位置的数字是被微软保留的000A-000D:记录图像数据区的起始位置。从文件开始到位图数...

weixin_35462155的博客 939

java bmp_JAVA实现对BMP图片的读取

BMP图片格式,是windows自带的一个图片格式,(*bmp),在windows的系统下都支持这种格式,bmp格式与设备无关的位图(DIB)格式,BMP简称位图,BMP的原始数据是没有经过压缩处理的 占用的空间比其它格式的图片要大BMP由四部分组成 ,位图文件头 , 位图信息头 , 颜色 , 图像数据区BMP图片是三个字节为一个颜色保存,将字节拼接为int需要使用位移来做位图文件头 (12个...

weixin_28331555的博客 643

用 Java 保存位图文件

                                    用 Java 保存位图文件    Jean-Pierre Dubé·jdeveloper 摘要   虽然 Java 提供了几种打开图像的机制,但保存图像并不是它的强项。这篇技巧将讲述如何将图像保存在 24 位位图文件中。另外,Jean-Pierre 还提供了将图像文件写入位图文件所需的全部代码。   这篇技巧是 "

iBreathe的专栏 1715

如何在 Java 应用程序中读取8 位和24 位位图文件

  Java 的当前发行版并不正式支持在 Java 应用程序中读取 Microsoft Windows 位图文件。但别担心,我们有办法解决这个问题!这篇技巧将说明如何完成这一任务 -- 我们首先说明读取 Microsoft Windows 文件格式的基本步骤。   Windows DIB(设备独立的位图)文件格式比较简单。与纯位图格式不同,DIB 格式保留着用于在内存中存储图像的明确信息。问题是图

水之轮回 978

java dib文件 加位图文件头_DIB位图文件的格式、读取、保存和显示(转载)

一、位图文件结构位图文件由三部分组成:文件头 + 位图信息 + 位图像素数据1、位图文件头:BitMapFileHeader。位图文件头主要用于识别位图文件。以下是位图文件头结构的定义:typedefstructtagBITMAPFILEHEADER{//bmfhWORDbfType; //bfType指定文件类型。其值必须是0x4d42,即字...

weixin_36384964的博客 238

java读取bmp位图

BMP由四部分组成 ,位图文件头 , 位图信息头 , 颜色 , 图像数据区 BMP图片是三个字节为一个颜色保存,将字节拼接为int需要使用位移来做 位图文件头 (12个字节): 0000-0001:文件标识,为字母ASCII码“BM”,42 4D。 0002-0005:整个文件大小,单位字节。 0006-0009:这个位置的数字是被微软保留的 000A-000D...

diwu7288的博客 611
上一篇: 误导入包import com.sun.org.apache.xpath.internal.operations.String;
下一篇: Java中字符输入流的概念 Reader类和其直接子类FileReader类的知识
崔凯洋
博客等级 码龄6年 26粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值