Java - ByteArrayInputStream 类及示例



java.io.ByteArrayInputStream 类包含一个内部缓冲区,其中包含可从流中读取的字节。一个内部计数器跟踪由 read 方法提供的下一个字节。以下是关于 ByteArrayInputStream 的一些重要要点:

  • 关闭 ByteArrayInputStream 不会有任何影响。

  • 即使流已关闭,此类中的方法也可以被调用,而不会产生 IOException。

类声明

以下是 java.io.ByteArrayInputStream 类的声明:

public class ByteArrayInputStream
   extends InputStream

字段

以下是 java.io.ByteArrayInputStream 类的字段:

  • protected byte[] buf - 这是由流创建者提供的字节数组。

  • protected int count - 这是输入流缓冲区中最后一个有效字符后一个的索引。

  • protected int mark - 这是流中当前标记的位置。

  • protected int pos - 这是要从输入流缓冲区读取的下一个字符的索引。

类构造函数

序号 构造函数及描述
1

ByteArrayInputStream(byte[] buf)

创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组。

2

ByteArrayInputStream(byte[] buf, int offset, int length)

创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组。

类方法

序号 方法及描述
1 int available()

此方法返回可以从此输入流读取(或跳过)的剩余字节数。

2 void close()

关闭 ByteArrayInputStream 不会有任何影响。

3 void mark(int readAheadLimit)

此方法设置流中当前标记的位置。

4 boolean markSupported()

此方法测试此 InputStream 是否支持 mark/reset。

5 int read()

此方法读取从此输入流中的下一个数据字节。

6 int read(byte[] b, int off, int len)

此方法最多读取 len 个字节的数据到此输入流中的字节数组中。

7 void reset()

此方法将缓冲区重置到标记的位置。

8 long skip(long n)

此方法跳过从此输入流中的 n 个输入字节。

继承的方法

此类继承自以下类的方法:

  • java.io.InputStream
  • java.io.Object

示例

以下示例演示了 ByteArrayInputStream 和 ByteArrayOutputStream 的用法。

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class ByteStreamTest {
   public static void main(String args[])throws IOException {
      ByteArrayOutputStream bOutput = new ByteArrayOutputStream(12);
      while( bOutput.size()!= 10 ) {
         
         // Gets the inputs from the user
         bOutput.write("hello".getBytes()); 
      }
      byte b [] = bOutput.toByteArray();
      System.out.println("Print the content");      
      for(int x = 0 ; x < b.length; x++) {
         
         // printing the characters
         System.out.print((char)b[x]  + "   "); 
      }
      System.out.println("   ");      
      int c;
      ByteArrayInputStream bInput = new ByteArrayInputStream(b);
      System.out.println("Converting characters to Upper case " );
      
      for(int y = 0 ; y < 1; y++) {
         while(( c = bInput.read())!= -1) {
            System.out.println(Character.toUpperCase((char)c));
         }
         bInput.reset(); 
      }
   }
}

输出

Print the content
h   e   l   l   o   h   e   l   l   o      
Converting characters to Upper case 
H
E
L
L
O
H
E
L
L
O
java_files_io.htm
广告