首页  >  文章  >  Java  >  Java 输出流写入器

Java 输出流写入器

PHPz
PHPz原创
2024-08-30 16:08:051022浏览

OutputStreamWriter 是 java.io 类中的一个类,用于将字符流转换为字节流。字符到字节的转换是使用已指定的字符集编码完成的。它包含一个 write() 方法,该方法调用编码转换器将字符转换为字节流,从字节流中将生成的字节发送到缓冲区,在缓冲区中累积字节并发送到输出流。字符不经过缓冲就传递给 write() 方法,从而导致频繁调用转换器,因此与 BufferedWriter 一起使用。

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

语法:

public class OutputStreamWriter extends Writer

此语法描述了这是一个公共类,这意味着它可以从项目中的任何位置实例化。该类是抽象类 Writer 类的直接子类,用于处理写入字符流。

OutputStreamWriter 在 Java 中如何工作?

  • OutputStreamWriter 类是 Writer 类的直接子类,有助于写入输出流。该类将字符流中的每个字符转换为字节流,从而充当字符流和字节流之间的桥梁。
  • 对于此转换,它使用编码器的指定字符集,例如 UTF-8 等,作为参数传递给其 write 方法。由于传递给 write 方法的字符没有被缓冲,因此输出字节流在写入输出流之前会被缓冲。
  • 为了优化应用程序的性能并避免频繁调用转换器,建议与 BufferedWriter 一起使用。

构造函数

为了创建 OutputStreamWriter 类的实例,我们有以下 4 种类型的构造函数:

1. OutputStreamWriter(输出流输出)

此构造函数返回具有默认字符编码的 OutputStreamWriter 实例。这是创建实例的最简单方法。

示例:

FileOutputStream fileObj = new FileOutputStream (String path); //

这是 OutputStream 的一个实例。

OutputStreamWriter output = new OutputStreamWriter (fileObj);//

上面的实例作为参数传递,以指定需要写入输出的文件。

2. OutputStreamWriter (OutputStream out, CharsetcsObj)

此构造函数返回使用指定字符集的 OutputStreamWriter 实例。这里指定的字符集可以像Charset.forName(“UTF8”)一样,创建一个字符集实例作为方法的参数。

示例:

OutputStreamWriter output = new OutputStreamWriter (fileObj,Charset.forName ( "UTF8"));

3. OutputStreamWriter (OutputStream out, CharsetEncoder enc)

此构造函数返回使用指定字符集编码器的 OutputStreamWriter 实例。

示例:

CharsetEncoderencoder = B2CConverter.UTF_8.newEncoder ()
OutputStreamWriter output = new OutputStreamWriter (fileObj, encoder);

4. OutputStreamWriter (OutputStream out, StringcsName)

此构造函数返回使用指定字符集名称的 OutputStreamWriter 实例。

示例:

OutputStreamWriter output = new OutputStreamWriter (fileObj,"UTF-8");

这里,用于将字符流转换为字节流的字符集名称是“UTF-8”。

方法

1。 close ():- 此方法有助于在刷新流后关闭流。不需要任何参数,并且该方法不会返回任何内容。

语法

public void close ()

2。 lush ():- 此方法有助于刷新流。不需要任何参数,并且此方法不会返回任何内容。

语法

public void flush ()

3。 getEncoding ():- 此方法有助于检索给定 OutputStreamWriter 实例使用的字符集编码的名称。调用方法时无需传递任何参数。

语法

public String getEncoding ()

返回实例使用的编码名称的字符串表示形式。

4。 write (char[] charbuf, int off, int len):- 此方法有助于写入从偏移位置开始且长度为 'len' 的字符数组的特定部分。如果出现这种情况,此方法会抛出 IOException任何输入都不正确或为空。

语法

public void write (char[] charbuf, int off, int len)

该方法只是将转换后的字节流写入输出文件。它不会返回任何内容。

5。 write (int ch):- 此方法用于将单个字符写入指定其 ASCII 字符的流。如果给出的任何输入不正确或为 null,此方法将抛出 IOException。

语法

public void write (int ch)

该方法只是将转换后的字节流写入输出文件。它不会返回任何内容。

6。 write(String str, int off, int len):- 此方法用于将以给定偏移量和给定长度开始的字符串的一部分写入流。

Syntax

public void write (String strObj, int offset, int lgth)

This method just writes the converted byte stream to the output file. It does not return anything.

Examples

Below the examples of Java OutputStreamWriter:

Example 1

import java.io.*;
public class StreamDemo
{
public static void main (String[] args)
{
String data = "LetsLearnOuptputStreamClass";
try
{
OutputStream file = new FileOutputStream ("abc.txt");
OutputStreamWriter outObj = new OutputStreamWriter (file);
FileInputStream inFileObj = new FileInputStream ("abc.txt");
outObj.write (data, 5, 6);
outObj.flush ();
System.out.println ( "Name of Encoding used here is : " + outObj.getEncoding ());
for (int i = 0; i<6; i++)
{
System.out.println ( "Character written is : " + (char) inFileObj.read());
}
outObj.close ();
}
catch (Exception ex)
{
System.out.println ( "Error Occurred");
ex.printStackTrace ();
}
}
}

Output:

Java 输出流写入器

Example 2

import java.io.*;
public class StreamDemo
{
public static void main (String[] args)
{
try
{
OutputStream g = new FileOutputStream ( "C:/Users/savij/Desktop/abc.txt");
OutputStreamWriter outObj = new OutputStreamWriter (g);
FileInputStream in = new FileInputStream ( "C:/Users/savij/Desktop/abc.txt");
outObj.write (69);
outObj.write (68);
outObj.write (85);
outObj.write (67);
outObj.write (66);
outObj.write (65);
outObj.flush ();
for (int i = 0; i< 6; i++)
{
System.out.println ( "The char being written: " + (char) in.read());
}
outObj.close ();
}
catch (Exception ex)
{
System.out.println ( "Error");
ex.printStackTrace ();
}
}
}

Output:

Java 输出流写入器

Example 3

//package Proc;
import java.io.*;
public class StreamDemo
{
public static void main (String[] args)
{
char[] data = {'E','D','U','C','B','A'};
try
{
OutputStream file = new FileOutputStream ( "abc.txt");
OutputStreamWriter outObj = new OutputStreamWriter (file);
FileInputStream inFileObj = new FileInputStream ( "abc.txt");
outObj.write (data,2, 4);
outObj.flush ();
for (int i = 0; i<4; i++)
{
System.out.println ( "Character written is : " + (char) inFileObj.read());
}
outObj.close ();
}
catch (Exception ex)
{
System.out.println ( "Error Occurred");
ex.printStackTrace ();
}
}
}

Output:

Java 输出流写入器

Conclusion – Java OutputStreamWriter

OutputStreamWriter is a utility that acts as a bridge from the character stream to a byte stream. It contains a write method that takes input in the form of characters and converts them into bytes using the specified charset or charset encoder for e.g., UTF-8. This class’s efficiency and performance can be enhanced if BufferredWriter is being used instead of Writer to write the resultant byte stream to the output streams.

以上是Java 输出流写入器的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
上一篇:Java IO下一篇:DataInputStream in Java