Java中的 PushbackInputStream read() 方法和示例
Java中PushbackInputStream类的read()方法有两种:
- Java中PushbackInputStream类的read()方法用于从输入流中读取下一个字节的数据。此方法以整数形式从输入流中返回读取的字节。
句法:
public int read() throws IOException
覆盖:此方法覆盖FilterInputStream类的 read() 方法。
参数:此方法不接受任何参数。
返回值:此方法返回流的下一个字节。如果流结束,则返回 -1。
异常:如果通过调用同一个类的close()方法关闭输入流或发生I/O错误,则该方法抛出IOException 。
下面的程序说明了 IO 包中 PushbackInputStream 类的 read() 方法:
方案一:
// Java program to illustrate // PushbackInputStream read() method import java.io.*; public class GFG { public static void main(String[] args) throws IOException { // Create an array byte[] byteArray = new byte[] { 'G', 'E', 'E', 'K', 'S' }; // Create inputStream InputStream inputStr = new ByteArrayInputStream(byteArray); // Create object of // PushbackInputStream PushbackInputStream pushbackInputStr = new PushbackInputStream(inputStr); for (int i = 0; i < byteArray.length; i++) { System.out.println( "Char : " + (char)pushbackInputStr.read()); } } }
输出:Char : G Char : E Char : E Char : K Char : S
方案二:
// Java program to illustrate // PushbackInputStream read() method import java.io.*; public class GFG { public static void main(String[] args) throws IOException { // Create an array byte[] byteArray = new byte[] { 'G', 'E', 'E', 'K', 'S', 'F', 'O', 'R', 'G', 'E', 'E', 'K', 'S' }; // Create inputStream InputStream inputStr = new ByteArrayInputStream(byteArray); // Create object of // PushbackInputStream PushbackInputStream pushbackInputStr = new PushbackInputStream(inputStr); for (int i = 0; i < byteArray.length; i++) { System.out.println( "Char : " + (char)pushbackInputStr.read()); } } }
输出:Char : G Char : E Char : E Char : K Char : S Char : F Char : O Char : R Char : G Char : E Char : E Char : K Char : S
- Java中PushbackInputStream类的read(byte[], int, int)方法用于将输入流中最多给定字节的数据读取到字节数组中。此方法不是一次读取一个字符,而是一次读取多个字符。
句法:
public int read(byte[] b, int offset, int length) throws IOException
覆盖:此方法覆盖FilterInputStream类的 read() 方法。
参数:此方法不接受三个参数:
- b – 它表示读取数据的字节数组。
- offset – 它表示数组中的起始索引。
- length - 它表示要读取的字节数。
返回值:该方法返回读取的总字节数。如果流结束,则返回 -1。
例外:
- NullPointerException – 如果字节数组为空,此方法将抛出 NullPointerException。
- IndexOutOfBoundsException - 如果偏移量为负数或长度为负数或长度大于数组长度和偏移量的差,则此方法抛出 IndexOutOfBoundsException。
- IOException – 如果通过调用同一类的 close() 方法关闭输入流或发生 I/O 错误,则此方法将引发IOException 。
下面的程序说明了 IO 包中 PushbackInputStream 类的 read(byte[], int, int) 方法:
方案一:
// Java program to illustrate // PushbackInputStream // read(byte[], int, int) method import java.io.*; public class GFG { public static void main(String[] args) throws IOException { // Create buffer byte[] b = new byte[1024]; // Create an array byte[] byteArray = new byte[] { 'G', 'E', 'E', 'K', 'S' }; // Create inputStream InputStream inputStr = new ByteArrayInputStream(byteArray); // Create object of // PushbackInputStream PushbackInputStream pushbackInputStr = new PushbackInputStream(inputStr); pushbackInputStr.read(b, 0, 4); for (int i = 0; i < 4; i++) { System.out.print((char)b[i]); } } }
输出:GEEK
方案二:
// Java program to illustrate // PushbackInputStream // read(byte[], int, int) method import java.io.*; public class GFG { public static void main(String[] args) throws IOException { // Create buffer byte[] b = new byte[1024]; // Create an array byte[] byteArray = new byte[] { 'G', 'E', 'E', 'K', 'S', 'F', 'O', 'R', 'G', 'E', 'E', 'K', 'S' }; // Create inputStream InputStream inputStr = new ByteArrayInputStream(byteArray); // Create object of // PushbackInputStream PushbackInputStream pushbackInputStr = new PushbackInputStream(inputStr); pushbackInputStr.read(b, 8, 5); for (int i = 8; i < 13; i++) { System.out.print((char)b[i]); } } }
输出:GEEKS
参考:
1. Java()
2. https://docs.oracle.com/javase/10/docs/api/java Java, int, int)