English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Java

Control de flujo de Java

Java Arreglo

Java Orientado a Objetos (I)

Java Orientado a Objetos (II)

Java Orientado a Objetos (III)

Manejo de excepciones en Java

Java Lista (List)

Java Cola (Queue)

Java Conjuntos Map

Java Conjuntos Set

Java Entrada/Salida (I/O)/)

Java Reader/Writer

Otras temáticas de Java

Clase Java FileInputStream

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).

Crear un FileInputStream

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.

Métodos de FileInputStream

La clase FileInputStream proporciona implementaciones para diferentes métodos que aparecen en la clase InputStream.

Método read()

  • 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.

método available()

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,

  1. primero hemos utilizado el método available() para verificar el número de bytes disponibles en el flujo de entrada de archivo.

  2. luego, hemos utilizado el método read()3lectura desde el flujo de entrada de archivo3bytes.

  3. 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.

método skip()

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()方法被调用,我们就不能使用输入流来读取数据。

在以上所有示例中,我们都使用了close()方法来关闭文件输入流。

FileInputStream的其他方法

方法内容描述
finalize()确保close()方法被调用
getChannel()返回FileChannel与输入流关联的对象
getFD()返回与输入流关联的文件描述符
mark()标记输入流中已读取数据的位置
reset()将控件返回到输入流中设置了标记的点