使用缓存字节数组读取java字节流时,第一次读取是,读满缓存字节数组大小,才进行下次读取,还是随机读一个小于数组大小的值,再进行下次读取???

读取本地文件时,首次读取读满整个字节数组,在进行下次读取。

package com.lyf.test;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import org.junit.Test;

public class ReadFile {

@Test

public void readTxt() {

InputStream is = null;

String path = this.getClass().getClassLoader().getResource("abc.txt")

.getPath();

System.out.println(path);

String content = "";

String loopContentString ="";

try {

is = new FileInputStream(path);

byte buff[] = new byte[16];

int len = is.read(buff);

content = new String(buff, 0, len);

System.out.println(len);

while (len != -1) {

len = is.read(buff);

System.out.println(len);

if(len != -1){

content += new String(buff,0,len);

}

}

System.out.println(content);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try {

is.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

结果:其中abc.txt 大小就26个字节

读取远程数据接口数据流时,

String queryUrl = "https://www.kuaidi100.com/chaxun?com=yuantong&nu=887240223128139035";

try {

URL url = new URL(queryUrl);

URLConnection con = url.openConnection();

con.setAllowUserInteraction(false);

urlStream= url.openStream();

String type = con.guessContentTypeFromStream(urlStream);

String charSet = null;

if (type == null){

type = con.getContentType();

}

if (type == null || type.trim().length() == 0

|| type.trim().indexOf("text/html") < 0){

return;

}

if (type.indexOf("charset=") > 0){

charSet = type.substring(type.indexOf("charset=") + 8);

}

byte b[] = new byte[100];

int numRead = urlStream.read(b);

String content = new String(b, 0, numRead);

System.out.println("b中的内容用ascii表示,第3个字符的码是="+b[2]+"||第一次:"+numRead+"||"+content);

int i = 0;

while (numRead != -1) {

numRead = urlStream.read(b);

if (numRead != -1) {

i++;

// String newContent = new String(b, 0, numRead);

String newContent = new String(b, 0, numRead, charSet);

System.out.println("第"+i+"次:"+numRead+"||"+newContent);

content += newContent;

}

}

System.out.println(content);

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}finally{

try {

urlStream.close();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

读取结果:远程数据流的大小2032个字节

第一次读取只读了,27个字节,

问题:为啥读取本地文件和远程数据的首次读取不同,是网络问题,还是java中read函数的限制??

纳闷............

java读取字节流设置字节数组长度_java读取流数据时,字节缓存数组,第一次读取时,是否读满,才进行下次读取??...相关推荐

  1. JAVA不同类型数组重载_JAVA补课-DAY1:方法重载和数组

    IDEA简单方法使用 快捷键 Ctrl+Alt+L,IDEA代码格式化 Ctrl+/单行注释,重复按取消 Ctrl+Shift+/多行注释,重复可取消 5.fori<==>for (int ...

  2. 通过ffmpeg实时读取宇视摄像头的高清帧流数据,并保存4张图片进行4合一照片的生成。

    通过ffmpeg实时读取宇视摄像头的高清帧流数据,并保存4张图片进行4合一照片的生成. FFmpeg视频解码过程 通常来说,FFmpeg的视频解码过程有以下几个步骤: 注册所支持的所有的文件(容器)格 ...

  3. java 设置数组长度_java如何增加数组长度

    遇到一个面试题:在不使用list的add方法的情况下,动态的添加元素(大概是这个样子): ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,需学习arraylist的相关知识(ht ...

  4. java改变数组长度_Java修改数组长度

    java中没有关于修改数组长度的api,在此本人提供了修改数组长度的两个函数:arrayAddLength()和arrayReduceLength().详细见代码. [java] view plain ...

  5. java string长度字节_java String类型数据的字节长度

    utf-8以三个字节存储中文 gbk以二个字节存储中文 /** * 字节(UTF-8)长度计算 * * @param s * 所需计算字节 * @return 字节长度 * @throws Unsup ...

  6. java string类型大小_Java String类型数据的字节长度

    问题描述: 向Oracle数据库中一varchar2(64)类型字段中插入一条String类型数据,程序使用String.length()来进行数据的长度校 验,如果数据是纯英文,没有问题,但是如果数 ...

  7. 遍历数组长度_Java基础之数组

    (1)数组:存储同一种数据类型的多个元素的容器(注意和集合的区别 后面的总结之中有). (2)特点:每一个元素都有编号,从0开始,最大编号是长度-1.编号的专业叫法:索引. (3)定义格式 A:数据类 ...

  8. delphi 获取数组长度_Java中的数组(基础篇六)

    在学习数组之前我们先来了解一下容器,生活中的容器比如水杯是用来装水的,衣柜是装衣服的,Java中的容器是用来存储数据的,将多个数据存储到一起,每个数据称为该容器的元素. 数组:数组就是存储数据长度固定 ...

  9. int数组初始化_Java中到底有没有多维数组

    Java 中没有多维数组的概念,从数组底层的运行机制上来看 Java 没有多维数组,但是 Java 提供了支持多维数组的语法,可以实现多维数组的功能. Java 语言里的数组类型是引用类型,因此数组变 ...

最新文章

  1. react input[type='number']
  2. Sql Injection 注入攻击
  3. PCB电路设计10大基本原则
  4. 攻防世界 ——crypto
  5. 修改windows远程登录端口
  6. golang 微框架 gin
  7. 利用httponly提升应用程序安全性
  8. 相机标定方法机理总结与公式推导(Camera calibration)
  9. 产品经理必备利器:UML
  10. FAST算法学习笔记
  11. 使用winserver2003配置DNS服务器
  12. 电脑bios进入方法介绍
  13. SIM卡中ICCID标识与IMSI的区别
  14. 大数据领域一些值得读的论文(不断更新
  15. python怎么从excel获取数据_python如何读取excel表数据
  16. 双臂14轴机器人YuMi
  17. Python爬取《隐秘的角落》弹幕数据,实现简单可视化(附源码)
  18. 10个免费的顶级跨浏览器测试工具
  19. 如何加快疫苗生产?答案在技术领域而非医学领域
  20. git 贮藏弹出报错

热门文章

  1. Python实现获取汉字笔画数,根据汉字笔画数量排序
  2. c语言读取txt数字错误,C语言fread为什么会读取失败呢?
  3. 北大青鸟ACCP6.0MyKtv播放器内嵌
  4. 高驰涛——裸奔到北京的程序猿
  5. C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换。
  6. 两位诺奖得主加持、解决“不可能三角”的UPoS机制来了
  7. Python超时机制两种办法
  8. 7N65-ASEMI小功率MOS管7N65
  9. 基于SpringBoot+Mybatis开发的前后端ERP系统Saas平台
  10. 【stm32】stm32cubeIDE在freeRTOS无法printf float 浮点数