FileInputStream.read(byte[] b),数组长度大于读取内容字节数长度
来源:互联网 发布:营销软件网站 编辑:程序博客网 时间:2024/05/22 06:23
在学习I/O数据流时学习了FileInputStream.read(byte[] b)方法,在使用这个方法时发现,当数组的长度大于读取内容字节数长度(字符、数字1字节、中文2字节、换行2字节)时,使用Arrays.toString(b)观察b数组的内容发现,b数组里有除读取内容外的其他内容。为此我做了测试。
package day20;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
public class day20_21 {
public static void main(String[] args) throws IOException { // TODO 自动生成的方法存根 FileInputStream fis=new FileInputStream("无标题 1"); byte[] b=new byte[2]; //查看read方法返回值(读取到的内容字节长度) System.out.println(fis.read(b)); //查看数组实际存储内容 System.out.println(Arrays.toString(b)); //第二次查看read方法返回值(读取到的内容字节长度) System.out.println(fis.read(b)); //第二次查看数组实际存储内容 System.out.println(Arrays.toString(b));}
}
“无标题 1”文件内容:只有012三个数字
程序运行结果:
分析:由于数组只有2个字节,而文件有3个字节,所以需要两次read()才能全部读完,第一次数组内容正确,第二次理论上应该只读取到了50(ASCII表表示2),但是他读取到了50和49(ASCII表表示2和1),由此我发现了问题的关键,read()采用的是覆盖存储,当b数组第一次存储了48、49,第二次存储50时就自动把48覆盖49不管他,所以看到的就是read()返回1但是数组实际内容却有两个字节。
阅读全文
0 0
- FileInputStream.read(byte[] b),数组长度大于读取内容字节数长度
- FileInputStream 之read(byte [] b)方法
- 输入数组长度大于此表中的列数
- 求出现次数大于数组长度一半的那个数
- 从指定文件(字节数组)获取内容以及获取长度
- 有序数组长度为N 元素出现的长度为 大于等于 N 除 4 的最小的数
- 要求在长度为100字节的数组中,找出大于42H的无符号数的个数并存 ;入字节单元UP中,找出小于42H的无符号数并存入DOWN中
- ASP.NET错误:输入数组长度大于此表中的列数。
- ASP.NET错误:输入数组长度大于此表中的列数。
- ASP.NET错误:输入数组长度大于此表中的列数
- System.ArgumentException: 输入数组长度大于此表中的列数。
- 寻找水王ID,数组中出现次数大于总长度一半的数
- C语言读取数组长度
- java代码长度不能大于65535字节的解决办法
- 数获得数组的长度
- StringLen 返回字符串的长度:字节数
- 根据字符长度来获取字节数
- JS计算字符长度、字节数
- Javascript 面向对象编程
- GIT绑定远端码云官方库方法
- Android NDK 开发 C++调用java数组 以及方法
- [微信小程序]转发(分享)和打电话功能,完整代码附效果图
- jQuery 添加 input 表单提交 无数据
- FileInputStream.read(byte[] b),数组长度大于读取内容字节数长度
- android学习笔记之ImageView的scaleType属性
- Java中矩阵运算(math3的使用)
- 亚马逊海外购拿下“德国”领地:政经力量下的新味道
- 【全网独家】Kendo UI培训正式上线,抢先预约有惊喜!
- 复选框全选
- 【工具】Fiddler使用教程
- 一、lintcode刷题记录--矩阵面积、二叉树的最大节点、整数排序、删除链表中的元素
- js去除字符串中所有 和&等特殊符号