基于java的InputStream.read(byte[] b,int off,int len)算法学习!
public int read(byte[] b,int off,int len)throws IOException
-
将输入流中最多
len
个数据字节读入字节数组。尝试读取多达len
字节,但可能读取较少数量。以整数形式返回实际读取的字节数。在输入数据可用、检测到流的末尾或者抛出异常前,此方法一直阻塞。
如果
b
为null
,则抛出NullPointerException
。如果
off
为负,或len
为负,或off+len
大于数组b
的长度,则抛出IndexOutOfBoundsException
。如果
len
为 0,则没有字节可读且返回0
;否则,要尝试读取至少一个字节。如果因为流位于文件末尾而没有可用的字节,则返回值-1
;否则,至少可以读取一个字节并将其存储在b
中。将读取的第一个字节存储在元素
b[off]
中,下一个存储在b[off+1]
中,依次类推。读取的字节数最多等于len
。让 k为实际读取的字节数;这些字节将存储在元素b[off]
至b[off+
k-1]
之间,其余元素b[off+
k]
至b[off+len-1]
不受影响。在任何情况下,元素
b[0]
至b[off]
和元素b[off+len]
至b[b.length-1]
都不会受到影响。如果不是因为流位于文件末尾而无法读取第一个字节,则抛出
IOException
。特别是,如果输入流已关闭,则抛出IOException
。类
InputStream
的read(b,
off,
len)
方法只重复调用方法read()
。如果第一个这样的调用导致IOException
,则从对read(b,
off,
len)
方法的调用中返回该异常。如果对read()
的任何后续调用导致IOException
,则该异常会被捕获并将发生异常时的位置视为文件的末尾;到达该点时读取的字节存储在b
中并返回发生异常之前读取的字节数。建议让子类提供此方法的更有效的实现。 -
- 参数:
-
b
- 读入数据的缓冲区。 -
off
- 在其处写入数据的数组b
的初始偏移量。 -
len
- 要读取的最大字节数。 - 返回:
-
读入缓冲区的总字节数,如果由于已到达流末尾而不再有数据,则返回
-1
。 - 抛出:
-
IOException
- 如果发生 I/O 错误。 -
NullPointerException
- 如果b
为null
。
read是一个很好的读取器,对流,如应用于下载中是一个不错的算法!例子:
public static final int INITIAL_SIZE = 100000;
private byte buffer[] = new byte[INITIAL_SIZE];
private int index = 0;
private int capacity() {
return (buffer.length - index);
}
public void read(InputStream in, int max) throws IOException {
long k= 0;
do {
int size;
// only read up to the max size, if the max size was
// specified
if (max != -1) {
size = Math.min(capacity(), max);
} else {
size = capacity();
}
// actually read the block
k= in.read(buffer, index, capacity());
// quit if we hit EOF
if (k< 0) {
break;
}
// adjust capacity if needed
index += k;
if (capacity() < 10) {
expand();
}
// see if we hit the max length
if (max != -1) {
max -= l;
if (max <= 0) {
break;
}
}
} while (k!= 0);
}
算法
基于java的InputStream.read(byte[] b,int off,int len)算法学习!相关推荐
- 【Java】- Incompatible types. Found: java. lang. String', required:' byte, char, short or int'
IDEA项目编译报错:Incompatible types. Found: java. lang. String', required:' byte, char, short or int',swit ...
- “泰迪杯”挑战赛 - 基于Java的面向网络舆情的关联度分析(附算法代码)
目 录 研究目标 分析方法与过程 2.1. 总体流程 2.2. 具体步骤 2.3. 结果分析 结论 参考文献 1. 挖掘目标 本次建模目标是利用网络爬虫工具采集的大量网络舆情信息,采用数据挖掘技术,给 ...
- java 二维卡尔曼滤波_卡尔曼滤波(Kalman filtering)算法学习小记
动画和视频 一个例子 import numpy as np # 模拟数据 t = np.linspace(1, 100, 100) a = 0.5 position = (a * t ** 2) / ...
- 零配置 之Spring基于Java类定义Bean配置元数据
转载自 [第十二章]零配置 之 12.4 基于Java类定义Bean配置元数据 --跟我学spring3 12.4 基于Java类定义Bean配置元数据 12.4.1 概述 基于Java类定义B ...
- 基于java线上教学平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
基于java线上教学平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java线上教学平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 本源码技术栈: 项目架构 ...
- 基于Java毕业设计员工婚恋交友平台源码+系统+mysql+lw文档+部署软件
基于Java毕业设计员工婚恋交友平台源码+系统+mysql+lw文档+部署软件 基于Java毕业设计员工婚恋交友平台源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开 ...
- 基于JAVA点餐系统设计计算机毕业设计源码+系统+lw文档+部署
基于JAVA点餐系统设计计算机毕业设计源码+系统+lw文档+部署 基于JAVA点餐系统设计计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软 ...
- 基于JAVA校园绿化管理系统计算机毕业设计源码+系统+数据库+lw文档+部署
基于JAVA校园绿化管理系统计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA校园绿化管理系统计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...
- 基于JAVA销售企业报价管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA销售企业报价管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA销售企业报价管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 ...
最新文章
- ubuntu14 + nginx + php
- 【Java】Volitile的作用、JVM规范如何要求内存屏障、硬件层级内存屏障如何帮助java实现高并发 - 第二天笔记
- metasploitable2渗透测试
- python伪装浏览器什么意思_python爬虫伪装浏览器出现问题求助
- java 构造函数嵌套_java – spring – 构造函数注入和覆盖嵌套bean的父定义
- 广义线性模型(Generalized Linear Models, GLM)
- et中计算机的快捷键,新手求助ET软件快捷键(求实用型的)
- Live 2D所有模型展示图
- android qq音乐歌词怎么实现,歌词翻译利器 QQ音乐Android3.9.5版本全新上线
- 短视频风口持续 今日头条再投10亿补贴火山小视频
- 备份和恢复 ESXi 主机配置
- Android【WebView】
- 什么是RGB-D图像
- Python3 数字组合
- 《那些年啊,那些事——一个程序员的奋斗史》——29
- 华升富士达电梯调试软件、故障分析软件,PMC,EEC,ROM
- 如何关掉计算机进行中的程序,任务管理器进程哪些是可以关闭的【图文教程】...
- 2020Java个人学习计划+书籍
- 【深入理解计算机操作系统】01_计算机系统漫游
- 查找算法【哈希表】 - 散列查找及性能分析
热门文章
- Redis Pub/Sub (Java)
- 如何获得Oracle系统性能统计? Oracle大型数据库系统在AIXUNIX上的实战详解 集中讨...
- 一款可以在BCH链上养大熊猫的游戏——CryptoPandas
- 比特币前首席开发人员:LN可能还需要18个月
- SpringBoot文件上传异常之temporary upload location not valid
- git clone的时候报error: RPC failed; result=18错误
- NFS配置全新设置常用参数说明
- Zookeeper集群 + Kafka集群 + KafkaOffsetMonitor 监控
- 阿里云Windows服务器重启后无法远程桌面连接,大量注册表在检测
- Linux与云计算——第二阶段Linux服务器架设 第八章:FTP服务器架设—安装配置FTP服务和客户端配置...