java.io中的read方法详解(尤其在数组流即在ByteArrayInputStream中)
来源:互联网 发布:冯大辉 知乎 编辑:程序博客网 时间:2024/05/17 23:06
一、我们知道现在具体需要了解的是ByteArrayInputStream中的read方法那我们先来认识一下这个数组流
java.lang.Object
继承者 java.io.InputStream
继承者 java.io.ByteArrayInputStream
public class ByteArrayInputStreamextends InputStreamByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。
关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。
二、下面细说read方法
数据流ByteArrayInputStream中的两个常见read方法,这个图片有些误导,以为read只有无参或者三个参数的情况,其实不然,我们忽略了一个重要的read方法,即数组流ByteArrayInputStream所继承的
java.io
类 InputStream中本身的read方法而其子类只是重写了部分方法,所以我们有时会忽略掉父类的方法
父类(InputStream)中的read方法
(1)public int read(byte[] b) throws IOException从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。以整数形式返回实际读取的字节数。
(2)public int read(byte[] b, int off, int len) throws IOException将输入流中最多 len 个数据字节读入 byte 数组。尝试读取 len 个字节,但读取的字节也可能小于该值。以整数形式返回实际读取的字节数。
子类(ByteArrayInputStream)中的read方法
(1)public int read()
从此输入流中读取下一个数据字节。返回一个 0 到 255 范围内的 int 字节值。如果因为到达流末尾而没有可用的字节,则返回值 -1。
(2)public int read(byte[] b, int off, int len)
 ;将最多 len 个数据字节从此输入流读入 byte 数组。如果 pos 等于 count,则返回 -1 指示文件结束。否则,读取的字节数 k 等于 len 和 count-pos 中的较小者。如果 k 是正数,则以 System.arraycopy 执行的方式将 buf[pos] 到 buf[pos+k-1] 的字节复制到 b[off] 到 b[off+k-1] 中。将值 k 与 pos 相加并返回 k。
注意:此方法覆盖:类 InputStream 中的 read
下面我们来做个关于byteArrayInputStream的例子(注意其中的read方法使用)
import java.io.*;
public class Example10_10 {
public static void main(String args[]) {
try {
ByteArrayOutputStream outByte=new ByteArrayOutputStream();
byte [] byteContent=”国庆60周年”.getBytes();
outByte.write(byteContent);
ByteArrayInputStream inByte=new ByteArrayInputStream(outByte.toByteArray());
byte backByte []=new byte[outByte.toByteArray().length];
inByte.read(backByte);
System.out.println(new String(backByte));
CharArrayWriter outChar=new CharArrayWriter();
char [] charContent=”中秋快乐”.toCharArray();
outChar.write(charContent);
CharArrayReader inChar=new CharArrayReader(outChar.toCharArray());
char backChar []=new char[outChar.toCharArray().length];
inChar.read(backChar);
System.out.println(new String (backChar));
}catch(IOException exp){}
}
- java.io中的read方法详解(尤其在数组流即在ByteArrayInputStream中)
- ByteArrayInputStream 和InputStream中read方法
- java.io.ByteArrayInputStream的mark方法
- 在java开发过程中什么时候使用ByteArrayInputStream和ByteArrayOuitputStream?
- JAVA 缓存数组之----ByteArrayInputStream类详解
- Java IO--内存操作流ByteArrayInputStream/ByteArrayOutputStream
- java IO流分析:ByteArrayInputstream 和 BufferedInputStream
- java.io.ByteArrayInputStream翻译
- java.io ByteArrayInputStream
- Java IO - ByteArrayInputStream&ByteArrayOutputStream
- Java-IO之ByteArrayInputStream
- Java IO (3)--ByteArrayInputStream
- JAVA中ByteArrayInputStream和ByteArrayOutputStream详解
- Java IO:常见Java IO流介绍(ByteArrayInputStream,ObjectInputStream,BufferedInputStream)
- java 中的clone() 在数组中
- java io流 DataOutputStream和DataInputStream类、ByteArrayOutputStream和ByteArrayInputStream详解
- Java IO:ByteArrayInputStream使用详解及源码分析
- 物理分页,即在Java中分页
- [POJ] 3278 Catch That Cow
- 《弃子长安》第六章 九煞夺命
- [LeetCode] String to Integer (atoi)
- 编译原理之词法分析
- C语言:假设在n进制下,等式成立,567*456=150216,n的值是多少?
- java.io中的read方法详解(尤其在数组流即在ByteArrayInputStream中)
- 三分钟学会使用log4J
- java基础知识总结
- WeaveSocket框架-Unity太空大战游戏-概述0
- httpclient4.5获取和设置cookie
- How does HDR relate to color space and bit depth?
- 【Spring Cloud】eclipse安装lombok
- show profile使用方法查看mysql性能
- luogu P1969积木大赛(NOIP 2013 TG)