Java 菜鳥教程

Java 流程控制

Java 數(shù)組

Java 面向?qū)ο?I)

Java 面向?qū)ο?II)

Java 面向?qū)ο?III)

Java 異常處理

Java 列表(List)

Java Queue(隊(duì)列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java OutputStreamWriter 類

在本教程中,我們將借助示例學(xué)習(xí)Java OutputStreamWriter及其方法。

java.io包的OutputStreamWriter類可用于將字符形式的數(shù)據(jù)轉(zhuǎn)換為字節(jié)形式的數(shù)據(jù)。

它繼承了抽象類Writer。

OutputStreamWriter是Java Writer的子類。

OutputStreamWriter類可與其他輸出流一起使用。 它也被稱為字節(jié)流和字符流之間的橋梁。 這是因?yàn)镺utputStreamWriter會(huì)將其字符轉(zhuǎn)換為字節(jié)。

例如,某些字符需要2個(gè)字節(jié)存儲(chǔ)在存儲(chǔ)器中。要寫入此類數(shù)據(jù),我們可以使用輸出流寫入器,該輸出流寫入器將字符轉(zhuǎn)換為相應(yīng)的字節(jié)并將字節(jié)存儲(chǔ)在一起。

創(chuàng)建一個(gè)OutputStreamWriter

為了創(chuàng)建OutputStreamWriter,我們必須先導(dǎo)入java.io.OutputStreamWriter包。導(dǎo)入包后,就可以在這里創(chuàng)建輸出流寫入器。

//創(chuàng)建一個(gè)OutputStream
FileOutputStream file = new FileOutputStream(String path);

//創(chuàng)建一個(gè)OutputStreamWriter
OutputStreamWriter output = new OutputStreamWriter(file);

在以上示例中,我們創(chuàng)建了一個(gè)名為output的OutputStreamWriter以及一個(gè)名為FileOutputStream的文件。

在這里,我們使用默認(rèn)的字符編碼將字符寫入輸出流。

但是,我們可以指定用于寫入數(shù)據(jù)的字符編碼類型(UTF8UTF16)。

//創(chuàng)建一個(gè)OutputStreamWriter,指定字符編碼
OutputStreamWriter output = new OutputStreamWriter(file, Charset cs);

在這里,我們使用Charset該類來指定字符編碼的類型。

OutputStreamWriter的方法

OutputStreamWriter類為Writer類中出現(xiàn)的不同方法提供了實(shí)現(xiàn)。

write()方法

  • write() -向?qū)懭肫鲗懸粋€(gè)字符

  • write(char[] array) - 將指定數(shù)組中的字符寫入寫入器

  • write(String data) - 將指定的字符串寫入寫入器

示例:OutputStreamWriter將數(shù)據(jù)寫入文件

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;

public class Main {

  public static void main(String args[]) {

    String data = "This is a line of text inside the file.";

    try {
      // 創(chuàng)建 FileOutputStream
      FileOutputStream file = new FileOutputStream("output.txt");

      //創(chuàng)建一個(gè)OutputStreamWriter
      OutputStreamWriter output = new OutputStreamWriter(file);

      //將字符串寫入文件
      output.write(data);

      //關(guān)閉 writer
      output.close();
    }

    catch (Exception e) {
      e.getStackTrace();
    }
  }
}

在上面的示例中,我們使用文件輸出流創(chuàng)建了一個(gè)輸出流讀取器。輸出流閱讀器與output.txt文件鏈接。

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

要將數(shù)據(jù)寫入文件,我們使用了write()方法。

在這里,當(dāng)我們運(yùn)行程序時(shí),output.txt文件將填充以下內(nèi)容。

This is a line of text inside the file.

getEncoding()方法

getEncoding()方法可用于獲取用于將數(shù)據(jù)寫入輸出流的編碼類型。例如,

import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.io.FileOutputStream;

class Main {
  public static void main(String[] args) {

    try {
      // 創(chuàng)建一個(gè)輸出流
      FileOutputStream file = new FileOutputStream("output.txt");

      // 創(chuàng)建具有默認(rèn)編碼的輸出流閱讀器
      OutputStreamWriter output1 = new OutputStreamWriter(file);

      // 創(chuàng)建指定編碼的輸出流閱讀器
      OutputStreamWriter output2 = new OutputStreamWriter(file, Charset.forName("UTF8"));

      // 返回輸出流的字符編碼
      System.out.println("output1的字符編碼: " + output1.getEncoding());
      System.out.println("output2的字符編碼: " + output2.getEncoding());

      // 關(guān)閉 reader
      output1.close();
      output2.close();
    }

    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

輸出結(jié)果

output1的字符編碼: Cp1252
output2的字符編碼: UTF8

在上面的示例中,我們創(chuàng)建了2個(gè)輸出流寫入器,分別名為output1和output2。

  • output1沒有指定字符編碼。因此,getEncoding()方法返回默認(rèn)字符編碼。

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

注意:我們已經(jīng)使用Charset.forName()方法指定字符編碼的類型。

close()方法

要關(guān)閉輸出流編寫器,我們可以使用close()方法。一旦調(diào)用了close()方法,就不能使用writer寫入數(shù)據(jù)。

OutputStreamWriter 其他方法

方法描述
flush()強(qiáng)制將寫入器中存在的所有數(shù)據(jù)寫入相應(yīng)的目的地
append()將指定字符插入當(dāng)前編寫器
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清