首页 >Java >java教程 >Java 字节数组输入流

Java 字节数组输入流

WBOY
WBOY原创
2024-08-30 16:09:13757浏览

ByteArrayInputStream 类由两个阶段组成:字节数组阶段和输入流阶段。字节数组在保存输入流的重要数据和必要字节方面发挥着关键作用。 Java ByteArrayInputStream 类由内部缓冲区组成,负责将字节数组作为流读取。字节数组传递要作为输入流提供的数据。当该数据存在于缓冲区中时,该数据会增加。使用此类,数据的遍历和检索变得灵活且无缝。

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

语法:

public class ByteArrayInputStream extends InputStream

作为Java ByteArrayInputStream的一部分,执行流程如下:

声明了 ByteArrayInputStream 的公共类,它扩展了接口作为与输入流中放入的流进行交互的媒介。

ByteArrayInputStream 类在 Java 中如何工作?

ByteArrayInputStream 的工作原理非常简单,其主要原理是将字节数组无缝转换为输入流。作为此类的另一个优点,缓冲区确保由 API 组成的 java.io.ByteArrayInput 包允许您将字节数组中的数据作为字节数组的流读取,然后将其转换为输入流,这将被送入缓冲区。 ByteArrayInputstream 是InputStream 类的子类。因此,ByteArrayInputStream可以用作InputStream。如果数据作为输入流排列并存储在数组中,则可以将其包装到字节数组中,并可以轻松地转换为流。一旦 ByteArrayInputStream 对象准备就绪,就可以使用一系列辅助方法来读取流并对其进行操作。

Java ByteArrayInputStream 的构造函数

以下构造函数用于支持java的ByteArrayInputStream类。

ByteArrayInputStream[byte a]

作为 Java ByteArrayInputStream 的一部分,此构造函数的工作方式用于接受一组准备好的字节数组,特别是作为作为包和类的一部分存在的内部缓冲区内存中的参数。

ByteArrayInputStream(byte [] a, int off, int len)

这个构造函数作为 java ByteArrayInputStream 类的一部分,从流中传递三个参数作为参数,其中考虑了字节数组、整数关闭和定义整数的长度,并且当作为流提供时,流还保持顺序输入到缓冲区的内存中,这意味着首先是字节数组 a[],然后是两个整数值,其中 off 是要读取的第一个字节,后面是要读取的字节数的长度。

Java ByteArrayInputStream 的方法

以下是Java ByteArrayInputStream的方法:

  1. public int read()
  2. public int read(byte[] r, int off, int len)
  3. public int available()
  4. 公共无效标记(int read)
  5. 公共长跳过(long n)
  6. 公共布尔标记Supported()
  7. 公共无效重置()
  8. public void close()

1. public int read()

该方法是 ByteArrayInputStream 类的一部分,用于读取已经流动的输入流中可用的下一个字节,它返回范围为 0-255 的 int 类型。如果缓冲区中没有字节作为输入流,则它已返回到流的末尾,返回 -1 作为值。

2. public int read(byte[] r, int off, int len)

此方法从输入流中读取从off开始的字节数长度的字节到数组中,并返回总字节数,直到返回-1的最后一个字节。

3. public int available()

作为 ByteArrayInputStream 类的一部分,此方法用于读取和确认可从输入流读取的字节总数。

4.公共无效标记(int read)

作为 ByteArrayInputStream 类的一部分,该方法用于标记和设置输入流的当前位置。基本上,它设置了一个读取限制,以获取在标记的限制集失效之前可以读取的最大字节数。

5.公共长跳过(long n)

作为 ByteArrayInputStream 类的一部分,此方法用于跳过输入流中的字节数作为该方法的参数。

6.公共布尔标记Supported()

此方法用于测试输入流是否支持标记的限制或在没有其存在的情况下正常运行。它有一个特殊的功能,即每当支持该标记时就将其用作方法;它返回一个始终为 true 的值。

7. public void reset()

This method is used to reset the position of the marker as it is provoked by the mark() method. The added advantage is to reposition and reset the marker for traversing.

8. public void close()

This method plays a crux to release all the resources once close. When It gets called, the input stream gets closed, and the stream gets associated with the garbage collector.

Examples to Implement of Java ByteArrayInputStream

Below are the examples of Java ByteArrayInputStream:

Example #1

This program is used to illustrate the read() method byte by byte in ByteArrayInputStream.

Code:

import java.io.*;
public class Input_Buffer_Stream1 {
public static void main(String[] args) throws Exception {
byte guava = 0;
byte pine = 0;
byte kiwi = 0;
byte orange = 0;
byte[] buffr = {guava, pine, kiwi,orange};
ByteArrayInputStream fruits = new ByteArrayInputStream(buffr);
int k = 0;
while((k=fruits.read())!=-1) {
System.out.println("These fruits are really tasty and relising to have & Its the time to have ad enjoy!");
}
}
}

Output:

Java 字节数组输入流

Example #2

This program illustrates the available method of ByteArrayInputStream.

Code :

import java.io.ByteArrayInputStream;
public class Input_Buffer_Stream2 {
public static void main(String[] args) {
byte[] buffr= {20,22};
ByteArrayInputStream bytes = new ByteArrayInputStream(buffr);
int bytes_Available = bytes.available();
System.out.println("no of bytes available:" + bytes_Available);
}
}

Output:

Java 字节数组输入流

Example #3

This program illustrates the mark method of the ByteArrayInputStream class.

Code:

import java.io.ByteArrayInputStream;
public class Input_Buffer_Stream3 {
public static void main(String[] args) {
byte[] buffr= {20,22,19,10};
ByteArrayInputStream bytes_arr = new ByteArrayInputStream(buffr);
bytes_arr.mark(0);
System.out.println("These are the marked bytes of the stream:" + bytes_arr);
}
}

Output:

Java 字节数组输入流

Example #4

This program illustrates the skip method of the ByteArrayInputStream class.

Code :

import java.io.ByteArrayInputStream;
public class Input_Buffer_Stream4 {
public static void main(String[] args) throws Exception {
byte[] buffr= {20,22,18,10};
ByteArrayInputStream learning = null;
learning = new ByteArrayInputStream(buffr);
long num = learning.skip(1);
System.out.println("Char : "+(char)learning.read());
}
}

Output:

Java 字节数组输入流

Example #5

This program illustrates the boolean mark supported method of the ByteArrayInputStream class.

Code :

import java.io.ByteArrayInputStream;
public class Input_Buffer_Stream_5 {
public static void main(String[] args) {
byte[] buff = {15, 18, 20, 40, 52};
ByteArrayInputStream educba = null;
educba = new ByteArrayInputStream(buff);
boolean checker = educba.markSupported();
System.out.println("\n mark is supported for : "+ checker );
}
}

Output:

Java 字节数组输入流

Example #6

This program illustrates the presence of boolean mark, reset, and close method of the ByteArrayInputStream class.

Code:

import java.io.ByteArrayInputStream;
import java.io.IOException;
public class Input_Buffer_Stream_5 {
public static void main(String[] args) {
byte[] buff = {15, 18, 20, 40, 52};
ByteArrayInputStream educba = null;
educba = new ByteArrayInputStream(buff);
boolean checker = educba.markSupported();
System.out.println("\n mark is supported for : "+ checker );
if(educba.markSupported())
{
educba.reset();
System.out.println("\n supports for the marking limit once reset");
System.out.println("Char : "+(char)educba.read());
}
else
{
System.out.println("It is not supporting the positioning using reset method");
}
System.out.println("educba.markSupported() supported reset() : "+checker);
if(educba!=null)
{
try {
educba.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
} <strong>Output:</strong>

Java 字节数组输入流

Conclusion

Java ByteArrayInputStream is a class that has a lot of capability and versatility to play around with the arrays in the internal buffer, which is the beauty of the class. It does not require any external class or plugin to support its base methods which work with a lot of functionality. ByteArrayInputStream together forms a perfect combination to feed the input and output stream related data.

以上是Java 字节数组输入流的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn