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)算法学习!相关推荐

  1. 【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 ...

  2. “泰迪杯”挑战赛 - 基于Java的面向网络舆情的关联度分析(附算法代码)

    目 录 研究目标 分析方法与过程 2.1. 总体流程 2.2. 具体步骤 2.3. 结果分析 结论 参考文献 1. 挖掘目标 本次建模目标是利用网络爬虫工具采集的大量网络舆情信息,采用数据挖掘技术,给 ...

  3. java 二维卡尔曼滤波_卡尔曼滤波(Kalman filtering)算法学习小记

    动画和视频 一个例子 import numpy as np # 模拟数据 t = np.linspace(1, 100, 100) a = 0.5 position = (a * t ** 2) / ...

  4. 零配置 之Spring基于Java类定义Bean配置元数据

    转载自  [第十二章]零配置 之 12.4 基于Java类定义Bean配置元数据 --跟我学spring3 12.4  基于Java类定义Bean配置元数据 12.4.1  概述 基于Java类定义B ...

  5. 基于java线上教学平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java线上教学平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java线上教学平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 本源码技术栈: 项目架构 ...

  6. 基于Java毕业设计员工婚恋交友平台源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计员工婚恋交友平台源码+系统+mysql+lw文档+部署软件 基于Java毕业设计员工婚恋交友平台源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开 ...

  7. 基于JAVA点餐系统设计计算机毕业设计源码+系统+lw文档+部署

    基于JAVA点餐系统设计计算机毕业设计源码+系统+lw文档+部署 基于JAVA点餐系统设计计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软 ...

  8. 基于JAVA校园绿化管理系统计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA校园绿化管理系统计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA校园绿化管理系统计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...

  9. 基于JAVA销售企业报价管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA销售企业报价管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA销售企业报价管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 ...

最新文章

  1. ubuntu14 + nginx + php
  2. 【Java】Volitile的作用、JVM规范如何要求内存屏障、硬件层级内存屏障如何帮助java实现高并发 - 第二天笔记
  3. metasploitable2渗透测试
  4. python伪装浏览器什么意思_python爬虫伪装浏览器出现问题求助
  5. java 构造函数嵌套_java – spring – 构造函数注入和覆盖嵌套bean的父定义
  6. 广义线性模型(Generalized Linear Models, GLM)
  7. et中计算机的快捷键,新手求助ET软件快捷键(求实用型的)
  8. Live 2D所有模型展示图
  9. android qq音乐歌词怎么实现,歌词翻译利器 QQ音乐Android3.9.5版本全新上线
  10. 短视频风口持续 今日头条再投10亿补贴火山小视频
  11. 备份和恢复 ESXi 主机配置
  12. Android【WebView】
  13. 什么是RGB-D图像
  14. Python3 数字组合
  15. 《那些年啊,那些事——一个程序员的奋斗史》——29
  16. 华升富士达电梯调试软件、故障分析软件,PMC,EEC,ROM
  17. 如何关掉计算机进行中的程序,任务管理器进程哪些是可以关闭的【图文教程】...
  18. 2020Java个人学习计划+书籍
  19. 【深入理解计算机操作系统】01_计算机系统漫游
  20. 查找算法【哈希表】 - 散列查找及性能分析

热门文章

  1. Redis Pub/Sub (Java)
  2. 如何获得Oracle系统性能统计? Oracle大型数据库系统在AIXUNIX上的实战详解 集中讨...
  3. 一款可以在BCH链上养大熊猫的游戏——CryptoPandas
  4. 比特币前首席开发人员:LN可能还需要18个月
  5. SpringBoot文件上传异常之temporary upload location not valid
  6. git clone的时候报error: RPC failed; result=18错误
  7. NFS配置全新设置常用参数说明
  8. Zookeeper集群 + Kafka集群 + KafkaOffsetMonitor 监控
  9. 阿里云Windows服务器重启后无法远程桌面连接,大量注册表在检测
  10. Linux与云计算——第二阶段Linux服务器架设 第八章:FTP服务器架设—安装配置FTP服务和客户端配置...