首頁 > Java > java教程 > 主體

Java 輸出流寫入器

PHPz
發布: 2024-08-30 16:08:05
原創
1020 人瀏覽過

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中文網其他相關文章!

相關標籤:
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!