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

Tutoriales básicos de Java

Control de flujo 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 Queue (cola)

Colección de Java

Java Set conjunto

Java entrada salida (I/O)

Java Reader/Writer

Temas de Java otros

Clase Java OutputStreamWriter

En este tutorial, aprenderemos a través de ejemplos sobre Java OutputStreamWriter y sus métodos.

La clase OutputStreamWriter del paquete java.io se puede usar para convertir datos en forma de caracteres a datos en forma de bytes.

Hereda de la clase abstracta Writer.

La clase OutputStreamWriter se puede usar con otros flujos de salida. También se conoce como el puente entre el flujo de bytes y el flujo de caracteres. Esto se debe a que OutputStreamWriter convierte sus caracteres en bytes.

Por ejemplo, ciertos caracteres necesitan2Un byte se almacena en la memoria. Para escribir este tipo de datos, podemos usar el escritor de flujo de salida, que convierte los caracteres en bytes correspondientes y los almacena juntos.

crea un OutputStreamWriter

Para crear OutputStreamWriter, primero debemos importar el paquete java.io.OutputStreamWriter. Después de importar el paquete, podemos crear aquí el escritor de flujo de salida.

//Crear un OutputStream
FileOutputStream file = new FileOutputStream(String path);
//crea un OutputStreamWriter
OutputStreamWriter output = new OutputStreamWriter(file);

En el ejemplo anterior, creamos un OutputStreamWriter llamado output y un archivo FileOutputStream.

Aquí, usamos la codificación de caracteres predeterminada para escribir caracteres en el flujo de salida.

Pero, podemos especificar el tipo de codificación de caracteres utilizado para escribir datosUTF8OUTF16)

//Crear un OutputStreamWriter, especificar la codificación de caracteres
OutputStreamWriter output = new OutputStreamWriter(file, Charset cs);

Aquí, utilizamos la clase Charset para especificar el tipo de codificación de caracteres.

Métodos de OutputStreamWriter

La clase OutputStreamWriter proporciona implementaciones para diferentes métodos que aparecen en la clase Writer.

Método write()

  • write() -Escribe un carácter en el escritor

  • write(char[] array) - Escribe los caracteres del array especificado en el escritor

  • write(String data) - Escribe la cadena especificada en el escritor

Ejemplo: OutputStreamWriter escribe datos en el archivo

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
public class Main {}}
  public static void main(String args[]) {
    String data = "Esta es una línea de texto dentro del archivo.";
    try {
      // crea FileOutputStream
      FileOutputStream file = new FileOutputStream("output.txt");
      //crea un OutputStreamWriter
      OutputStreamWriter output = new OutputStreamWriter(file);
      //escribir una cadena en el archivo
      output.write(data);
      //cerrar writer
      output.close();
    }
    catch (Exception e) {
      e.getStackTrace();
    }
  }
}

En el ejemplo anterior, hemos utilizado el flujo de salida de archivo para crear un lector de flujo de salida. El lector de flujo de salida conoutput.txtenlace de archivo.

FileOutputStream file = new FileOutputStream("output.txt");
OutputStreamWriter output = new OutputStreamWriter(file);

Para escribir datos en el archivo, hemos utilizado el método write().

Aquí, cuando ejecutamos el programa,output.txtEl archivo se llenará con el siguiente contenido.

Esta es una línea de texto dentro del archivo.

método getEncoding()

El método getEncoding() se puede usar para obtener el tipo de codificación utilizado para escribir datos en el flujo de salida. Por ejemplo,

import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.io.FileOutputStream;
class Main {
  public static void main(String[] args) {
    try {
      // crea un flujo de salida
      FileOutputStream file = new FileOutputStream("output.txt");
      // crea un lector de flujo de salida con codificación predeterminada
      OutputStreamWriter output1 = new OutputStreamWriter(file);
      // crea un lector de flujo de salida con codificación especificada
      OutputStreamWriter output2 = new OutputStreamWriter(file, Charset.forName("UTF8");
      // devuelve la codificación de caracteres del flujo de salida
      System.out.println("salida1la codificación de caracteres: " + output1.getEncoding());
      System.out.println("salida2la codificación de caracteres: " + output2.getEncoding());
      // cerrar reader
      output1.cerrar();
      output2.cerrar();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

输出结果

output1的字符编码: Cp1252
output2的字符编码: UTF8

在上面的示例中,我们创建了2个输出流写入器,分别名为output1和output2。

  • output1没有指定字符编码。因此,getEncoding()方法返回默认字符编码。

  • output2指定字符编码UTF8。因此,getEncoding()方法返回指定的字符编码。

注意:我们已经使用Charset.forName()方法指定字符编码的类型。

close()方法

要关闭输出流编写器,我们可以使用close()方法。一旦调用了close()方法,就不能使用writer写入数据。

OutputStreamWriter 其他方法

方法描述
flush()强制将写入器中存在的所有数据写入相应的目的地
append()将指定字符插入当前编写器