如何从InputStream获取完整长度的字节数组

InputStream类的available()方法获取流的长度问题 InputStream类的available()方法我们上传文件时经常会用到available来读取字节,能知道有多少个字节需要读取,这个方法从本地文件读取数据时一般不会出现问题,但是通过网路传输就会出现图片传输不完整的情况,因为网络通讯是间断性的一串字节往往分几批进行发送。本地程序调用available()方法有时得到0,这可能是对方还没有响应,也可能是对方已经响应了,但是数据还没有送达本地。对... 阅读详情
val inputStream: InputStream = // 输入流对象
val outputStream = ByteArrayOutputStream()
val bufferedInputStream = BufferedInputStream(inputStream)
val buffer = ByteArray(1024) // 缓冲区大小
var length: Int
while (bufferedInputStream.read(buffer).also { length = it } != -1) {
    outputStream.write(buffer, 0, length)
}
val byteArray = outputStream.toByteArray()
bufferedInputStream.close()
outputStream.close()

上面是正常从InputStream读取数据指定一个1024可能不太符合某些业务情况

如何准确指定长度捏?

val buffer = ByteArray(inputStream.available())

每次写IO的时候都忘记,写个笔记防止忘记

万字长文,小白新手怎么开始做YOLO实验,从零开始教!整体思路在这里,科研指南针! 阅读详情

相关推荐

直流电源滤波电路的设计与优化:从基础原理到高效应用

本文深入探讨直流电源滤波电路的设计与优化,从基础原理到高效应用全面解析。重点介绍电容滤波和电感滤波的工作原理及实战设计要点,分享复合滤波电路的进阶技巧,并提供常见问题排查指南。文章还涵盖现代滤波技术的新发展,如有源滤波和数字控制滤波的应用,帮助工程师提升电源系统的稳定性和效率。

weixin_29255731的博客 175

InputStream.read([byte[])详解

InputStream.read([byte[])每次读取byte[]数组大小的字节量,返回实质读取文件中的字节的长度,当读取字节流无任何文件内容后,返回值为-1。 // 字节流对象读取文件内容 InputStream in = new InputStram(inPath); byte[] b = byte[10]; int len = 0; while((len = in.read(b)) != -1) /*read每次读取10个字节,返回读取长度,当读取不满10个字节时, 返回实际读取字节数;当实际读

TT_Xmini的博客 2646

【小程序】支付宝直付通解决方案

支付宝直付通是支付宝为小程序提供的一种支付解决方案,可以实现小程序中直接使用支付宝进行支付。以上是一个简单的支付宝直付通解决方案及相关代码示例。具体的使用还需要根据自己的业务需求进行定制化开发和调整。

qq_31532979的贺公子之数据科学与艺术博客,致力于科技向善,拥抱开源,要用技术的影响力来领导团队,而不是威权和职位! 1281

java的InputStream获取字节大小相关方法

java的InputStream获取字节大小的相关方法与inputStream.available()方法获取文件字节大小不对

weixin_48469176的博客 6401

从报错到定位:Memtest86 DQ位算法解析与实践指南

本文深入解析了Memtest86内存测试工具报错信息的解读方法,重点介绍了通过地址解析、数据转换、位比对和DQ定位四步算法,精准锁定故障DQ位的实践流程。文章以DDR4和DDR5为例,详细拆解了从十六进制报错到二进制比对的完整步骤,并提供了从单个报错分析到故障模式诊断的进阶指南,帮助用户将抽象的报错信息转化为具体的维修或排查依据。

sre5engineer的博客 486

CoDeSys系列-3、Windows运行时软PLC主站和p-net从站IO设备组网测试

前面CODESY下载安装并熟悉了,p-net搭建从站也已经跑在虚拟机树莓派上了,我们只需要快速搭建一个profinet主站来和从站进行交互即可,这里我们直接用Windows下带的软PLC搭建profinet主站并和p-net的demo从站程序进行IO交互。评估是否进行Windows下的运行时PLC前先看一下注意事项,Windows下安装配置会需要修改boot及防火墙等,可能会影响Windows电脑的正常使用,所以创建项目时的设备可以选择非RTE的。

逍遥游的博客 7313

JAVA字节流InputStream类

InputStream是抽象类,只是InputStream读取的是字节,使用的参数是byte数组(byte[]) 读取文件的输入流:FileInputStream是节点流需要直接和指定文件关联。 方法摘要: available() 返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。 close() 关闭此输入流并释放...

weixin_44589378的博客 989

自动驾驶控制算法——MPC控制算法

自动驾驶MPC控制算法摘要 模型预测控制(MPC)是一种基于系统预测模型的先进控制算法,通过滚动优化方式求解最优控制输入。其核心流程包括:1)使用数学模型预测未来系统状态;2)定义优化目标函数衡量预测误差;3)求解满足约束的最优控制序列;4)仅执行第一步控制并重复该过程。 相比传统PID控制,MPC具有预测未来、多步优化、显式处理约束等优势,特别适合自动驾驶中对安全性要求高的场景,如轨迹跟踪、车道保持、联合纵横向控制、自动泊车和动态避障等。MPC通过状态空间模型预测系统行为,在每个控制周期计算未来N步的控制

swaggytiger的博客 7921

Java读取InputStream文本的几种方法总结,附读取字节流bytes字节数组byte[]方法

package org.jeecg.common.util; import com.alibaba.fastjson.util.IOUtils; import lombok.var; import java.io.*; public class StreamUtil { /** * @deprecated IOUtils.readAll */ static String readText_ali(InputStream inputStream) { .

程序员养成计划 1万+

OctoMag: An Electromagnetic System for 5-DOF Wireless Micromanipulation

电磁线圈组驱动经典系统,可以作为参考。 OctoMag: 用于5自由度无线微操作的一个电磁铁系统 OctoMag: An Electromagnetic System for 5-DOF Wireless Micromanipulation [1] Paper Link Authors: J. J. Abbott, etc. 2010, TRO IEEE Transactions on Robot...

XU Yangxin的博客 1665

DICOM医学影像开发者必备工具清单

PyDicom 是一个纯 Python 实现的 DICOM 文件解析库,允许开发者读取、修改和写入 DICOM 文件。它无需依赖外部库,易于集成到现有的 Python 项目中,非常适合快速开发和原型设计。DCMTK(DICOM Toolkit)是一个由OFFIS开发的开源C++库,提供了一整套DICOM标准的实现,包括文件操作、网络通信和图像处理等功能。它是开发高性能DICOM应用的理想选择。MicroDICOM 是一款免费的DICOM查看器,适用于Windows平台。

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 577

从inputStream中读取指定长度的字节

Java中如何从InputStream中读取指定长度的字节呢? 代码如下: Java代码 /*** *从输入流获取字节数组,当文件很大时,报java.lang.OutOfMemoryError:Javaheapspace * *@since2014-02-19 *@param...

weixin_34375054的博客 2653

【产品经理修炼之道】- 基金产品-“TA系统 ”

TA:Transfer Agent 缩写,通常称成“登记过户”。开放式基金登记过户(TA)系统是基金的登记过户系统。其功能涵盖了基金交易业务的各个环节,包括账户业务处理,如投资者开户、修改账户资料、挂失/解挂等;日常交易业务处理,如认购、申购(一般申购和定期定额)、赎回(一般赎回、指定赎回、预约赎回等)、转托管、基金转换等;特殊业务处理,如非交易过户、账户冻结/解冻等;分红业务处理,如现金分红和红利再投资。

xiaoli8748的专栏 1677

java 从InputStream 获取字节数组

java 中,如何从InputStream 读取字节数组呢? 方式一: /*** * Has been tested * * @param in * @return * @throws IOException */ public static byte[] readBytes(InputStream in) throws IOException { ...

hw1287789687的专栏 3468

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

详解字节输入流InputStream

(一)InputStream:字节输入流 java.io.InputStream:字节输入流 此抽象类是表示字节输入流的所有类的超类 定义了所有子类共性的方法 int read()从输入流中读取数据的下一个字节。 int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。 void close() 关闭此输入流并释放与该流关联的所有系统资源。 1.1 FileInputStream:文件字节输入流 java.io.FileInputStream exten

weiyoo55的博客 2万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【Java】 将 InputStream 转换为字节数组在 Java 中

在实际开发中,应根据具体需求和上下文选择合适的方法,并注意异常处理和资源管理,以确保代码的健壮性和效率。是用于读取数据的抽象类,它提供了从不同数据源读取数据的方法。在处理文件、网络连接或内存中的数据流时,我们经常需要将这些数据转换成字节数组(byte array),以便进一步处理或存储。> (1)纯Python语言实现,使用Flask后端,本地分析,不上传个人数据。> (2)内含QQ、微信聊天记录保存到本地的方法,真正实现自己数据自己管理。转换为字节数组是一个常见的任务,可以通过多种方式实现。

baidu_23445983的博客 1139

从InputStream开始位置向后获取特定的长度

public static final int READ_BUFFER_SIZE = 1024; /** * 读取流中的字符到数组 * @param in 该方法执行完成不会关闭流 * @param limit 读取大小限制 * @return * @throws IOException */ public static byte[] readStreamAsByteArray(In...

RAB3344的博客 1352

InputStream字节输入流、OutputStream字节输出流

InputStream就是Java标准库提供的最基本的输入流。它位于java.io这个包中。注意,InputStream并不是一个接口,而是一个抽象类,它是所有输入流的超类。

weixin_64975807的博客 1446

Java InputStream.read()如何读取数据流字节并存储到缓冲区数组呢?

Java InputStream.read()读取数据流字节并存储到缓冲区数组的方法分享

qq_25073223的博客 1265

inputstream java8_Java 之 字节输入流 [InputStream]

一、字节输入流java.io.InputStream 抽象类是表示字节输入流的所有类的超类,可以读取字节信息到内存中。它定义了字节输入流的基本共性功能方法。共性方法:public abstract int read() : 从输入流读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。public int read(byte[] b) : 从此输入流中将最多 b.length 个字...

weixin_29039773的博客 956

Java 字节输入流: InputStream

InputStream类的定义 public abstract class InputStream extends Object implements Closeable 常用方法 **读取数据到字节数组中: ** 如果字节数组大于数据的大小, 返回的是该数据的长度 如果数据大于字节数组的大小, 返回的是该数组的长度 如果没有数据了, 还要进行读取,则返回 -1 public int read(byte[] b) throws IOException **读取单个字节到字节数组中: *

Beyond_Nothing 815

未知文件长度获取InputStream字节数据

获取inputStream字节数据

站在光里,而不是站在那里 281

Java从InputStream中获取完整数据数组的方法

使用inputStream.available()方法,可以得到可用数组的长度。 代码样例如下: public class Application { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("C:/abc.txt"); merge(fis); //mergeOld(fis); } public static

BHSZZY的博客 1590

字节输入流InputStream

字节输入流(InputStream) java.io.InputStream抽象类是表示字节输入流的所有类的超类,注意该类是个抽象类 子类共性的成员方法 1、public void close()方法 作用:关闭输入流并释放与该流有关的所有系统资源 2、public int read()方法 作用:一次读一次字节,读完指针后移一位,读取到末尾返回-1 3、public int read(byte[ ] b)方法 作用:从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中 参数的作用是什么? 起到了缓冲

技术积累,技术分享 915

InputStream输入字节流

InputStream 输入流

liuqinhou的博客 2125

详解Java的IO流Part1:字节输入流(InputStream)和字节输出流(OutputStream)

计算机上数据的传输可以看做是一种数据的流动 按照流动的方向 以内存为基准 分为 输入input 和 输出output 即 流向内存是输入流 流出内存的输出流 流:数据(字符 字节) 1个字符=2个字节 1个字节=8个二进制位 Java中I/O操作是使用 java.io 包下的内容进行输入输出操作 输入也叫做读取数据 将硬盘中的数据读取到内存中使用 输出也叫做作写出数据 将内存中的数据写入到硬盘中...

"✧treasure mountain✧" 9193
上一篇: Android项目没有BuildConfig解决方案
下一篇: Android 使用UDP广播无法接受到消息
爱吃西瓜J
博客等级 码龄9年 6粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值