字节流

Posted 暗影蔽日

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字节流相关的知识,希望对你有一定的参考价值。

java最基本字节流类的顶层类有两个,一个是基本输入流InputStream类,另一个是基本输出流OutputStream类,为Object类派生,同时InputStream和OutputStream又派生很多子类。

所有的字节流都是InputStream抽象类和OutputStream抽象类的子类。在创建流时通过创造它们的子类来创造流

  •   read()从流中读取一个字节(整型),遇到尾返回-1
  • int read(byte[] b)读取b.length个字节存入数组b中,返回实际读取的字节数
  • int read(byte[] b,int off,int len)返回实际读取的字节数
  • int available()返回流中可读字节数
  • void close()关闭输入流

  流式输入最基本的特点就是读操作的顺序性,每个流都有一个位置指针,它在流刚被创建式产生并指向流的第一个数据,以后的每次读操作都是在当前位置指针处执行,伴随流操作的执行,位置指针自动后移,指向下一个未被读取的数据。Inputstream用来控制位置指针的有以下几个:

  • public long skip(long n)
  • public void mark()在当前位置指针处做一个标记
  • public void reset()将位置指针返回到标记的位置
    import java.io.*;
    public class ByteArray {
    public static void main(String[] args) {
        byte[] byteArray = new byte[10];//声明、定义数组
        byte[] byteArr2 = new byte[10];
        DataInputStream data = new DataInputStream(System.in);/*创建数据输入流对象*/
        ByteArrayInputStream byteStream;
        try {
            data.read(byteArray);//执行对象方法从键盘上输入数据放入字节数组中
            byteStream = new ByteArrayInputStream(byteArray);/*创建字节数组输入流对象*/
            byteStream.read(byteArr2,3,5);/*将流中前5字节放入byteArray2的第三位置之后*/
        } catch (IOException e) {
            System.out.println(e.toString());
        }
        for(int i=0;i<byteArray.length;i++)
            System.out.print(byteArray[i] + " ");//打印数组元素
        System.out.println();
        for(int i = 0;i<byteArr2.length;i++)
            System.out.print(byteArr2[i] + "  ");
    }
    }

     

以上是关于字节流的主要内容,如果未能解决你的问题,请参考以下文章

php如何将图片转成字节流

Java 字节流

IO拷贝代码

IO流学习之字节流

字节流与字符流的简单应用

在 C++ 中打印出字节流