English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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.
La clase OutputStreamWriter proporciona implementaciones para diferentes métodos que aparecen en la clase Writer.
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
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.
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()方法,就不能使用writer写入数据。
方法 | 描述 |
---|---|
flush() | 强制将写入器中存在的所有数据写入相应的目的地 |
append() | 将指定字符插入当前编写器 |