Java 菜鳥教程

Java 流程控制

Java 數(shù)組

Java 面向?qū)ο?I)

Java 面向?qū)ο?II)

Java 面向?qū)ο?III)

Java 異常處理

Java 列表(List)

Java Queue(隊列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java InputStreamReader 類

在本教程中,我們將借助示例學習Java InputStreamReader及其方法。

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

它繼承了抽象類Reader。

InputStreamReader類是Java Reader的suclass。

InputStreamReader類與其他輸入流一起工作。它也被稱為字節(jié)流和字符流之間的橋梁。這是因為InputStreamReader從輸入流中讀取作為字符的字節(jié)。

例如,某些字符需要2個字節(jié)才能存儲在存儲器中。要讀取此類數(shù)據(jù),我們可以使用輸入流讀取器,該讀取器一起讀取2個字節(jié)并將其轉(zhuǎn)換為相應的字符。

創(chuàng)建一個InputStreamReader

為了創(chuàng)建InputStreamReader,我們必須先導入java.io.InputStreamReader包。導入包后,就可以創(chuàng)建輸入流閱讀器。

//創(chuàng)建一個InputStream
FileInputStream file = new FileInputStream(String path);

//創(chuàng)建一個InputStreamReader
InputStreamReader input = new InputStreamReader(file);

在上面的示例中,我們創(chuàng)建了一個InputStreamReadernamed名為input和FileInputStreamnamed名為file。

在這里,文件中的數(shù)據(jù)使用某些默認字符編碼存儲。

但是,我們也可以在文件中指定字符編碼的類型(UTF8UTF16)。

//創(chuàng)建一個InputStreamReader,指定字符編碼
InputStreamReader input = new InputStreamReader(file, Charset cs);

在這里,我們使用了Charset類來指定文件中的字符編碼。

InputStreamReader的方法

InputStreamReader類提供Reader類中存在的不同方法的實現(xiàn)。

read()方法

  • read() - 從閱讀器讀取單個字符

  • read(char[] array) - 從閱讀器讀取字符并將其存儲在指定的數(shù)組中

  • read(char[] array, int start, int length) - 從讀取器讀取等于length的字符數(shù),并start開始存儲在指定的數(shù)組中

例如,假設我們有一個名為input.txt的文件,其中包含以下內(nèi)容。

This is a line of text inside the file.

讓我們嘗試使用讀取此文件InputStreamReader。

import java.io.InputStreamReader;
import java.io.FileInputStream;

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

    //創(chuàng)建一個字符數(shù)組
    char[] array = new char[100];

    try {
      //創(chuàng)建一個FileInputStream
      FileInputStream file = new FileInputStream("input.txt");

      //創(chuàng)建一個InputStreamReader
      InputStreamReader input = new InputStreamReader(file);

      //從文件中讀取字符
      input.read(array);
      System.out.println("流中的數(shù)據(jù):");
      System.out.println(array);

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

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

輸出結(jié)果

流中的數(shù)據(jù):
This is a line of text inside the file.

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

 FileInputStream file = new FileInputStream("input.txt");
 InputStreamReader input = new InputStreamReader(file);

為了從文件中讀取字符,我們使用了read()方法。

getEncoding()方法

getEncoding()方法可用于獲取用于在輸入流中存儲數(shù)據(jù)的編碼類型。例如,

import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.io.FileInputStream;

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

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

      //使用默認編碼創(chuàng)建一個InputStreamReader
      InputStreamReader input1 = new InputStreamReader(file);

      //創(chuàng)建指定編碼的InputStreamReader
      InputStreamReader input2 = new InputStreamReader(file, Charset.forName("UTF8"));

      //返回輸入流的字符編碼
      System.out.println("input1的字符編碼: " + input1.getEncoding());
      System.out.println("input2的字符編碼: " + input2.getEncoding());

      //關(guān)閉 reader
      input1.close();
      input2.close();
    }

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

輸出結(jié)果

input1的字符編碼: Cp1252
input2的字符編碼: UTF8

在上面的示例中,我們創(chuàng)建了兩個輸入流閱讀器,分別名為input1和input2。

  • input1沒有指定字符編碼。因此,getEncoding()方法返回默認字符編碼的規(guī)范名稱。

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

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

close()方法

要關(guān)閉輸入流閱讀器,我們可以使用close()方法。調(diào)用該close()方法后,我們將無法再使用讀取器讀取數(shù)據(jù)。

InputStreamReader的其他方法

方法描述
ready()檢查流是否準備好被讀取
mark()標記流中已讀取數(shù)據(jù)的位置
reset()重置標記點
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清