Java中的 PushbackInputStream unread() 方法及示例
Java中PushbackInputStream类的unread()方法分为三种:
- Java中PushbackInputStream类的unread(int b)方法用于通过将字节复制到推回缓冲区的前面来推回一个字节。撤销此方法后,当读取下一个字节时,它的值等于传递的参数。
句法:
public void unread(int b) throws IOException
参数:该方法接受一个参数b,代表要被推回的整数值。
返回值:此方法不返回任何值。
异常:如果输入流通过调用同一类的 close() 方法关闭,或者在回推缓冲区中没有足够的空间用于字节,则此方法抛出IOException 。
下面的程序说明了 IO 包中 PushbackInputStream 类的 unread(int) 方法:
方案一:
// Java program to illustrate // PushbackInputStream unread(int) 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.print( (char)pushbackInputStr.read()); } // Call unread() method pushbackInputStr.unread(65); System.out.print( "\n" + (char)pushbackInputStr.read()); } }
输出:GEEKS A
方案二:
// Java program to illustrate // PushbackInputStream unread() 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.print( (char)pushbackInputStr.read()); } // Call unread() method pushbackInputStr.unread(90); System.out.print( "\n" + (char)pushbackInputStr.read()); } }
输出:GEEKSFORGEEKS Z
- Java中PushbackInputStream类的unread(byte[] b)方法用于通过将字节数组复制到推回缓冲区的前面来推回字节数组。撤销此方法后,当读取下一个字节时,它的值等于字节数组的第一个元素。
句法:
public void unread(byte[] b) throws IOException
参数:该方法接受一个参数b,代表要被推回的字节数组。
返回值:此方法不返回任何值。
异常:如果输入流通过调用同一个类的 close() 方法关闭,或者在回推缓冲区中没有足够的空间用于数组字节,则此方法抛出IOException 。
下面的程序说明了 IO 包中 PushbackInputStream 类的 unread(byte[]) 方法:
方案一:
// Java program to illustrate // PushbackInputStream unread(byte[]) 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, 100); for (int i = 0; i < byteArray.length; i++) { System.out.print( (char)pushbackInputStr.read()); } // Create byte array byte[] b = new byte[] { 'A', 'B', 'C' }; // Call unread() method pushbackInputStr.unread(b); System.out.println(); for (int i = 0; i < b.length; i++) { System.out.print( (char)pushbackInputStr.read()); } } }
输出:GEEKS ABC
方案二:
// Java program to illustrate // PushbackInputStream unread(byte[]) 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, 100); for (int i = 0; i < byteArray.length; i++) { System.out.print( (char)pushbackInputStr.read()); } // Create byte array byte[] b = new byte[] { 'X', 'Y', 'Z' }; // Call unread() method pushbackInputStr.unread(b); System.out.println(); for (int i = 0; i < b.length; i++) { System.out.print( (char)pushbackInputStr.read()); } } }
输出:GEEKSFORGEEKS XYZ
- Java中PushbackInputStream类的unread(byte[] b, int offset, int length)方法用于通过将字节数组的一部分复制到推回缓冲区的前面来推回字节数组的一部分。撤销此方法后,当读取下一个字节时,它的值等于给定字节数组部分的第一个元素。
句法:
public void unread(byte[] b, int offset, int length) throws IOException
参数:此方法接受三个参数:
- b – 它表示要推送的部分字节数组。
- offset – 它表示字节数组部分的起始索引。
- length - 它表示要推送的字节数。
返回值:此方法不返回任何值。
异常:如果输入流通过调用同一个类的 close() 方法关闭,或者在回推缓冲区中没有足够的空间用于数组字节,则此方法抛出IOException 。
下面的程序说明了 IO 包中 PushbackInputStream 类的 unread(byte[], int, int) 方法:
方案一:
// Java program to illustrate // PushbackInputStream // unread(byte[], int, int) 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, 100); for (int i = 0; i < byteArray.length; i++) { System.out.print( (char)pushbackInputStr.read()); } // Create byte array byte[] b = new byte[] { 'A', 'B', 'C', 'D', 'E' }; // Call unread() method pushbackInputStr.unread(b, 2, 3); System.out.println(); for (int i = 0; i < 3; i++) { System.out.print( (char)pushbackInputStr.read()); } } }
输出:GEEKS CDE
方案二:
// Java program to illustrate // PushbackInputStream // unread(byte[], int, int) 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, 100); for (int i = 0; i < byteArray.length; i++) { System.out.print( (char)pushbackInputStr.read()); } // Create byte array byte[] b = new byte[] { 'W', 'X', 'Y', 'Z' }; // Call unread() method pushbackInputStr.unread(b, 1, 3); System.out.println(); for (int i = 0; i < 3; i++) { System.out.print( (char)pushbackInputStr.read()); } } }
输出:GEEKSFORGEEKS XYZ
参考:
1. https://docs.oracle.com/javase/10/docs/api/java Java)
2. https://docs.oracle.com/javase/10/docs/api/java Java)
3. https://docs.oracle.com/javase/10/docs/api/java Java, int, int)