El método unread() de la clase PushbackInputStream en Java es de tres tipos:
- El método no leído (int b) de la clase PushbackInputStream en Java se usa para retroceder un byte copiándolo al frente del búfer de retroceso. Después de revocar este método, cuando se lee el siguiente byte, tiene el valor igual al parámetro pasado.
Sintaxis:
public void unread(int b) throws IOException
Parámetros: este método acepta un parámetro b que representa el valor entero que se va a retroceder.
Valor devuelto : este método no devuelve ningún valor.
Excepciones: este método lanza IOException si el flujo de entrada se cierra llamando al método close() de la misma clase o si no hay suficiente espacio en el búfer de retroceso para el byte.
Los siguientes programas ilustran el método no leído (int) de la clase PushbackInputStream en el paquete IO:
Programa 1:
// 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());
}
}
Producción:GEEKS A
Programa 2:
// 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());
}
}
Producción:GEEKSFORGEEKS Z
- El método no leído (byte [] b) de la clase PushbackInputStream en Java se usa para retroceder una array de bytes copiándolos al frente del búfer de retroceso. Después de revocar este método, cuando se lee el siguiente byte, tiene el valor igual al primer elemento de la array de bytes.
Sintaxis:
public void unread(byte[] b) throws IOException
Parámetros: este método acepta un parámetro b que representa la array de bytes que se va a retroceder.
Valor devuelto : este método no devuelve ningún valor.
Excepciones: este método lanza IOException si el flujo de entrada se cierra llamando al método close() de la misma clase o si no hay suficiente espacio en el búfer de retroceso para el byte de la array.
Los siguientes programas ilustran el método no leído (byte []) de la clase PushbackInputStream en el paquete IO:
Programa 1:
// 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());
}
}
}
Producción:GEEKS ABC
Programa 2:
// 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());
}
}
}
Producción:GEEKSFORGEEKS XYZ
- El método no leído (byte[] b, int offset, int length) de la clase PushbackInputStream en Java se usa para retroceder una parte de una array de bytes copiándolo al frente del búfer de retroceso. Después de revocar este método, cuando se lee el siguiente byte, tiene el valor igual al primer elemento de la porción de la array de bytes dada.
Sintaxis:
public void unread(byte[] b, int offset, int length) throws IOException
Parámetros: Este método acepta tres parámetros:
- b : representa la array de bytes cuya parte se va a insertar.
- offset : representa el índice inicial de la parte de la array de bytes.
- longitud : representa la cantidad de bytes que se empujarán.
Valor devuelto : este método no devuelve ningún valor.
Excepciones: este método lanza IOException si el flujo de entrada se cierra llamando al método close() de la misma clase o si no hay suficiente espacio en el búfer de retroceso para el byte de la array.
Los siguientes programas ilustran el método no leído (byte [], int, int) de la clase PushbackInputStream en el paquete IO:
Programa 1:
// 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());
}
}
}
Producción:GEEKS CDE
Programa 2:
// 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());
}
}
}
Producción:GEEKSFORGEEKS XYZ
Referencias:
1. https://docs.oracle.com/javase/10/docs/api/java/io/PushbackInputStream.html#unread(int)
2. https://docs.oracle.com/javase/10/ docs/api/java/io/PushbackInputStream.html#unread(byte%5B%5D)
3. https://docs.oracle.com/javase/10/docs/api/java/io/PushbackInputStream.html#unread( byte%5B%5D, entero, entero)