English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este tutorial, aprenderemos con ejemplos sobre Java FileInputStream y sus métodos.
La clase FileInputStream del paquete java.io se puede usar para leer datos desde un archivo (en bytes).
Hereda de la clase abstracta InputStream.
Antes de aprender FileInputStream, asegúrate de que ya entiendasJava File(archivo).
Para crear un flujo de entrada de archivo, primero debemos importar el paquete java.io.FileInputStream. Después de importar el paquete, podemos usar Java para crear un flujo de entrada de archivo.
1Usando la ruta del archivo
FileInputStream input = new FileInputStream(stringPath);
Aquí, creamos un flujo de entrada que se conectará a la ruta de archivo especificada.
2Usando el objeto del archivo
FileInputStream input = new FileInputStream(File fileObject);
Aquí, creamos un flujo de entrada que se conectará al archivo especificado por fileObject.
La clase FileInputStream proporciona implementaciones para diferentes métodos que aparecen en la clase InputStream.
read() - Lee un byte desde el archivo
read(byte[] array) - Lee bytes desde el archivo y los almacena en el array especificado
read(byte[] array, int start, int length) - Lee el número de bytes igual a length desde el archivo y los almacena en el array especificado desde la posición start
Supongamos que tenemos un archivo llamadoinput.txtEl archivo, que contiene el siguiente contenido.
Esto es una línea de texto dentro del archivo.
Vamos a intentar leer este archivo usando FileInputStream.
import java.io.FileInputStream; public class Main { public static void main(String args[]) { try { FileInputStream input = new FileInputStream("input.txt"); System.out.println("Los datos del archivo: "); //leer el primer byte int i = input.read(); while(i != -1) { System.out.print((char)i); //leer el siguiente byte del archivo i = input.read(); } input.close(); } catch(Exception e) { e.getStackTrace(); } } }
输出结果
datos del archivo: Esto es una línea de texto dentro del archivo.
En el ejemplo anterior, creamos un flujo de entrada de archivo llamado input. El flujo de entrada está asociado coninput.txtenlace de archivo.
FileInputStream input = new FileInputStream("input.txt");
Para leer datos desde el archivo, hemos utilizado el método read() en el bucle while.
Para obtener el número de bytes disponibles, podemos usar el método available(). Por ejemplo,
import java.io.FileInputStream; public class Main { public static void main(String args[]) { try { //Supongamos que el archivo input.txt contiene el siguiente texto //Esta es una línea de texto dentro del archivo. FileInputStream input = new FileInputStream("input.txt"); //devuelve el número de bytes disponibles System.out.println("número de bytes disponibles al principio: "); + input.available()); //leer desde el archivo3bytes input.read(); input.read(); input.read(); //devuelve el número de bytes disponibles System.out.println("número de bytes disponibles al final: "); + input.available()); input.close(); } catch (Exception e) { e.getStackTrace(); } } }
输出结果
número de bytes disponibles al principio: 39 número de bytes disponibles al final: 36
En el ejemplo anterior,
primero hemos utilizado el método available() para verificar el número de bytes disponibles en el flujo de entrada de archivo.
luego, hemos utilizado el método read()3lectura desde el flujo de entrada de archivo3bytes.
Ahora, después de leer los bytes, hemos vuelto a verificar el número de bytes disponibles. Esta vez, el número de bytes disponibles se ha reducido3.
Para descartar y saltar bytes específicos, se puede usar el método skip(). Por ejemplo
import java.io.FileInputStream; public class Main { public static void main(String args[]) { try { //Supongamos que el archivo input.txt contiene el siguiente texto //Esta es una línea de texto dentro del archivo. FileInputStream input = new FileInputStream("input.txt"); //saltar5bytes input.skip(5; System.out.println("Salto de flujo de entrada: ");5bytes: "); //leer el primer byte int i = input.read(); while (i != -1) { System.out.print((char) i); //leer el siguiente byte del archivo i = input.read(); } // close() método input.close(); } catch (Exception e) { e.getStackTrace(); } } }
输出结果
输入流跳过5个字节: is a line of text inside the file.
在上面的示例中,我们使用了skip()方法从文件输入流中跳过5个字节的数据。因此,不会从输入流中读取表示文本“ This”的字节。
要关闭文件输入流,可以使用close()方法。一旦close()方法被调用,我们就不能使用输入流来读取数据。
在以上所有示例中,我们都使用了close()方法来关闭文件输入流。
方法 | 内容描述 |
---|---|
finalize() | 确保close()方法被调用 |
getChannel() | 返回FileChannel与输入流关联的对象 |
getFD() | 返回与输入流关联的文件描述符 |
mark() | 标记输入流中已读取数据的位置 |
reset() | 将控件返回到输入流中设置了标记的点 |