La clase FileInputStream es útil para leer datos de un archivo en forma de secuencia de bytes. FileInputStream está diseñado para leer flujos de bytes sin procesar, como datos de imágenes. Para leer flujos de caracteres, considere usar FileReader.
Constructores de la clase FileInputStream
1. FileInputStream (archivo de archivo): crea un flujo de archivo de entrada para leer desde el objeto de archivo especificado.
2. FileInputStream(FileDescriptor fdobj): crea un flujo de archivo de entrada para leer desde el descriptor de archivo especificado.
3. FileInputStream(String name): crea un flujo de archivo de entrada para leer desde un archivo con el nombre especificado.
Métodos de la clase FileInputStream
Métodos | Acción realizada |
---|---|
disponible() | Devuelve una estimación del número de bytes restantes que se pueden leer (u omitir) de este flujo de entrada. |
cerca() | Cierra este flujo de entrada de archivos y libera todos los recursos del sistema asociados con el flujo. |
finalizar() | Garantiza que se llame al método de cierre de este flujo de entrada de archivos cuando no haya más referencias a él. |
obtenerCanal() | Devuelve el objeto FileChannel único asociado con este flujo de entrada de archivos. |
obtenerFD() | Devuelve el objeto FileDescriptor que representa la conexión con el archivo real en el sistema de archivos que utiliza este FileInputStream. |
leer() | Lee un byte de datos de este flujo de entrada |
leer( byte[] b ) | Lee hasta b.length bytes de datos de este flujo de entrada en una array de bytes. |
leer( byte[] b, int off, int len ) | Lee hasta len bytes de datos de este flujo de entrada en una array de bytes. |
saltar() | Omite y descarta n bytes de datos del flujo de entrada |
Ahora, cuando usamos estos métodos, generalmente seguimos estos pasos para leer datos de un archivo usando FileInputStream, que es el ultimátum del objetivo de FileInputClass.
Paso 1: adjunte un archivo a FileInputStream, ya que esto nos permitirá leer los datos del archivo como se muestra a continuación:
FileInputStream fileInputStream =new FileInputStream(“file.txt”);
Paso 2: ahora, para leer datos del archivo, debemos leer datos de FileInputStream como se muestra a continuación:
ch=fileInputStream.read();
Paso 3-A: cuando no hay más datos disponibles para seguir leyendo, el método read() devuelve -1;
Paso 3-B: Luego debemos conectar el monitor al flujo de salida. Para mostrar los datos, podemos usar System.out.print.
System.out.print(ch);
Implementación:
Contenido del archivo original:
This is my first line This is my second line
Ejemplo:
Java
// Java Program to Demonstrate FileInputStream Class // Importing I/O classes import java.io.*; // Main class // ReadFile class GFG { // Main driver method public static void main(String args[]) throws IOException { // Attaching the file to FileInputStream FileInputStream fin = new FileInputStream("file1.txt"); // Illustrating getChannel() method System.out.println(fin.getChannel()); // Illustrating getFD() method System.out.println(fin.getFD()); // Illustrating available method System.out.println("Number of remaining bytes:" + fin.available()); // Illustrating skip() method fin.skip(4); // Display message for better readability System.out.println("FileContents :"); // Reading characters from FileInputStream // and write them int ch; // Holds true till there is data inside file while ((ch = fin.read()) != -1) System.out.print((char)ch); // Close the file connections // using close() method fin.close(); } }
Producción:
sun.nio.ch.FileChannelImpl@1540e19d java.io.FileDescriptor@677327b6 Number of remaining bytes:45 FileContents : is my first line This is my second line
BufferedInputStream se puede usar para leer un búfer lleno de datos a la vez desde un archivo. Esto mejora la velocidad de ejecución.
Este artículo es una contribución de Nishant Sharma . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA