Java IO: entrada-salida en Java con ejemplos

Java trae varios Streams con su paquete de E/S que ayuda al usuario a realizar todas las operaciones de entrada y salida. Estos flujos admiten todos los tipos de objetos, tipos de datos, caracteres, archivos, etc. para ejecutar completamente las operaciones de E/S.

Antes de explorar varios flujos de entrada y salida, veamos 3 flujos estándar o predeterminados que Java debe proporcionar y que también son los más comunes en uso:

  1. System.in : este es el flujo de entrada estándar que se utiliza para leer caracteres del teclado o cualquier otro dispositivo de entrada estándar.
  2. System.out : este es el flujo de salida estándar que se utiliza para producir el resultado de un programa en un dispositivo de salida como la pantalla de la computadora.

    Aquí hay una lista de las diversas funciones de impresión que usamos para generar declaraciones:

    • print() : este método en Java se usa para mostrar un texto en la consola. Este texto se pasa como parámetro a este método en forma de String. Este método imprime el texto en la consola y el cursor permanece al final del texto en la consola. La próxima impresión se lleva a cabo justo aquí.
      Sintaxis:
      System.out.print(parameter);

      Ejemplo:

      // Java code to illustrate print()
      import java.io.*;
        
      class Demo_print {
          public static void main(String[] args)
          {
        
              // using print()
              // all are printed in the
              // same line
              System.out.print("GfG! ");
              System.out.print("GfG! ");
              System.out.print("GfG! ");
          }
      }

      Producción:

      GfG! GfG! GfG! 
    • println() : este método en Java también se usa para mostrar un texto en la consola. Imprime el texto en la consola y el cursor se mueve al comienzo de la siguiente línea en la consola. La siguiente impresión tiene lugar a partir de la siguiente línea.
      Sintaxis:
      System.out.println(parameter);

      Ejemplo:

      // Java code to illustrate println()
        
      import java.io.*;
        
      class Demo_print {
          public static void main(String[] args)
          {
        
              // using println()
              // all are printed in the
              // different line
              System.out.println("GfG! ");
              System.out.println("GfG! ");
              System.out.println("GfG! ");
          }
      }

      Producción:

      GfG! 
      GfG! 
      GfG! 
    • printf() : este es el método más fácil de todos, ya que es similar a printf en C. Tenga en cuenta que System.out.print() y System.out.println() toman un solo argumento, pero printf() puede tomar múltiples argumentos . Esto se usa para formatear la salida en Java.
      Ejemplo:

      // A Java program to demonstrate working of printf() in Java
      class JavaFormatter1 {
          public static void main(String args[])
          {
              int x = 100;
              System.out.printf(
                  "Printing simple"
                      + " integer: x = %d\n",
                  x);
        
              // this will print it upto
              // 2 decimal places
              System.out.printf(
                  "Formatted with"
                      + " precision: PI = %.2f\n",
                  Math.PI);
        
              float n = 5.2f;
        
              // automatically appends zero
              // to the rightmost part of decimal
              System.out.printf(
                  "Formatted to "
                      + "specific width: n = %.4f\n",
                  n);
        
              n = 2324435.3f;
        
              // here number is formatted from
              // right margin and occupies a
              // width of 20 characters
              System.out.printf(
                  "Formatted to "
                      + "right margin: n = %20.4f\n",
                  n);
          }
      }

      Producción:

      Printing simple integer: x = 100
      Formatted with precision: PI = 3.14
      Formatted to specific width: n = 5.2000
      Formatted to right margin: n =         2324435.2500
  3. System.err : este es el flujo de error estándar que se utiliza para generar todos los datos de error que un programa podría arrojar, en una pantalla de computadora o cualquier dispositivo de salida estándar.

    Esta transmisión también utiliza las 3 funciones mencionadas anteriormente para generar los datos de error:

    • impresión()
    • imprimir()
    • imprimirf()
  4. Ejemplo:

    // Java code to illustrate standard
    // input output streams
      
    import java.io.*;
    public class SimpleIO {
      
        public static void main(String args[])
            throws IOException
        {
      
            // InputStreamReader class to read input
            InputStreamReader inp = null;
      
            // Storing the input in inp
            inp = new InputStreamReader(System.in);
      
            System.out.println("Enter characters, "
                               + " and '0' to quit.");
            char c;
            do {
                c = (char)inp.read();
                System.out.println(c);
            } while (c != '0');
        }
    }

    Aporte:

    GeeksforGeeks0

    Producción:

    Enter characters, and '0' to quit.
    G
    e
    e
    k
    s
    f
    o
    r
    G
    e
    e
    k
    s
    0

Tipos de flujos:

  • Según el tipo de operaciones , los flujos se pueden dividir en dos clases principales:
    1. Flujo de entrada: estos flujos se utilizan para leer datos que deben tomarse como entrada de una array o archivo de origen o cualquier dispositivo periférico. Por ejemplo, FileInputStream, BufferedInputStream, ByteArrayInputStream, etc.
    2. Flujo de salida: estos flujos se utilizan para escribir datos como salidas en una array o archivo o cualquier dispositivo periférico de salida. Por ejemplo, FileOutputStream, BufferedOutputStream, ByteArrayOutputStream, etc.
  • Dependiendo de los tipos de archivo , los flujos se pueden dividir en dos clases principales que se pueden dividir en otras clases, como se puede ver a través del diagrama a continuación, seguido de las explicaciones.
    1. ByteStream: Se utiliza para procesar datos byte a byte (8 bits). Aunque tiene muchas clases, FileInputStream y FileOutputStream son las más populares. FileInputStream se usa para leer desde el origen y FileOutputStream se usa para escribir en el destino. Aquí está la lista de varias clases de ByteStream:
      Clase de corriente Descripción
      BufferedInputStream Se utiliza para el flujo de entrada almacenado en búfer.
      flujo de entrada de datos Contiene un método para leer tipos de datos estándar de Java.
      FileInputStream Esto se usa para leer desde un archivo.
      Flujo de entrada Esta es una clase abstracta que describe la entrada de flujo.
      flujo de impresión Contiene el método print() y println() más utilizado
      BufferedOutputStream Esto se utiliza para el flujo de salida almacenado en búfer.
      Flujo de salida de datos Contiene un método para escribir tipos de datos estándar de Java.
      FileOutputStream Esto se utiliza para escribir en un archivo.
      Salida de corriente Esta es una clase abstracta que describe la salida de flujo.

      Ejemplo:

      // Java Program illustrating the
      // Byte Stream to copy
      // contents of one file to another file.
      import java.io.*;
      public class BStream {
          public static void main(
              String[] args) throws IOException
          {
        
              FileInputStream sourceStream = null;
              FileOutputStream targetStream = null;
        
              try {
                  sourceStream
                      = new FileInputStream("sorcefile.txt");
                  targetStream
                      = new FileOutputStream("targetfile.txt");
        
                  // Reading source file and writing
                  // content to target file byte by byte
                  int temp;
                  while ((
                             temp = sourceStream.read())
                         != -1)
                      targetStream.write((byte)temp);
              }
              finally {
                  if (sourceStream != null)
                      sourceStream.close();
                  if (targetStream != null)
                      targetStream.close();
              }
          }
      }

      Producción:

      Shows contents of file test.txt 
    2. CharacterStream: en Java, los caracteres se almacenan mediante convenciones Unicode (consulte esto para obtener más información). El flujo de caracteres automáticamente nos permite leer/escribir datos carácter por carácter. Aunque tiene muchas clases, FileReader y FileWriter son las más populares. FileReader y FileWriter son secuencias de caracteres que se utilizan para leer desde el origen y escribir en el destino, respectivamente. Aquí está la lista de varias clases de CharacterStream:
      Clase de corriente Descripción
      BufferedReader Se utiliza para manejar el flujo de entrada almacenado en búfer.
      Lector de archivos Este es un flujo de entrada que lee desde el archivo.
      InputStreamReader Este flujo de entrada se utiliza para traducir byte a carácter.
      OutputStreamReader Este flujo de salida se utiliza para traducir caracteres a bytes.
      Lector Esta es una clase abstracta que define la entrada del flujo de caracteres.
      Escritor de impresión Contiene el método print() y println() más utilizado
      Escritor Esta es una clase abstracta que define la salida del flujo de caracteres.
      BufferedWriter Esto se usa para manejar el flujo de salida almacenado en búfer.
      FileWriter Esto se usa para generar un flujo que escribe en el archivo.

      Ejemplo:

      // Java Program illustrating that
      // we can read a file in a human-readable
      // format using FileReader
        
      // Accessing FileReader, FileWriter,
      // and IOException
      import java.io.*;
      public class GfG {
          public static void main(
              String[] args) throws IOException
          {
              FileReader sourceStream = null;
              try {
                  sourceStream
                      = new FileReader("test.txt");
        
                  // Reading sourcefile and
                  // writing content to target file
                  // character by character.
                  int temp;
                  while ((
                             temp = sourceStream.read())
                         != -1)
                      System.out.println((char)temp);
              }
              finally {
                  // Closing stream as no longer in use
                  if (sourceStream != null)
                      sourceStream.close();
              }
          }
      }
    3. Consulte aquí para ver la diferencia completa entre Byte y Character Stream Class en Java.

Publicación traducida automáticamente

Artículo escrito por Chinmoy Lenka y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *