一、InputStreamReader的作用
InputStreamReader是Java IO中的核心類之一,它用於將字節流轉換為字符流。它包含在java.io包中,是java.io.Reader類的子類。
InputStreamReader主要的作用就是將InputStream字節流轉化為字符流,它可以指定字節流的編碼方式,例如UTF-8、GBK等等,這樣就可以將InputStream中的二進制數據轉換成我們想要的字符串類型。
下面通過一個簡單的示例來說明InputStreamReader的作用:
public static void main(String[] args) throws Exception { InputStream inputStream = new FileInputStream(new File("data.txt")); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String line; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } bufferedReader.close(); inputStreamReader.close(); inputStream.close(); }
在上述示例中,我們首先使用FileInputStream打開一個名為data.txt的文件,並獲取其輸入流。然後,我們創建了一個InputStreamReader對象,並將inputStream和編碼方式”UTF-8″傳入InputStreamReader的構造函數。最後,我們通過BufferedReader讀取整個文件,並將文件的每一行打印出來。
二、InputStreamReader的常用方法
1. read()
InputStreamReader中最常用的方法是read()方法,它會從輸入流中讀取一個字符。如果讀到流的末尾,則返回-1。
下面是read()方法的簡單示例:
public static void main(String[] args) throws Exception { InputStream inputStream = new FileInputStream(new File("data.txt")); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8"); int c = 0; while ((c = inputStreamReader.read()) != -1) { System.out.print((char) c); } inputStreamReader.close(); inputStream.close(); }
在上述示例中,我們使用FileInputStream打開一個名為data.txt的文件,並獲取其輸入流。然後,我們創建一個InputStreamReader對象,將inputStream和編碼方式”UTF-8″傳入InputStreamReader的構造函數。最後,我們通過一個while循環,依次讀取文件中的字符,並打印輸出。
2. read(char[] cbuf, int offset, int length)
該方法將數據從輸入流讀入一個字符數組cbuf中,offset指定開始存儲的下標位置,length表示讀取的字符個數。返回讀取的字符數,如果讀取流的末尾,返回-1。
下面是read(char[] cbuf, int offset, int length)方法的一個示例:
public static void main(String[] args) throws Exception { InputStream inputStream = new FileInputStream(new File("data.txt")); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8"); char[] buffer = new char[1024]; int length; while ((length = inputStreamReader.read(buffer, 0, 1024)) != -1) { System.out.print(new String(buffer, 0, length)); } inputStreamReader.close(); inputStream.close(); }
在上述示例中,我們使用FileInputStream打開了一個名為data.txt的文件,並獲取其輸入流。然後,我們創建一個InputStreamReader對象,將inputStream和編碼方式”UTF-8″傳入InputStreamReader的構造函數。接着,我們通過一個while循環,依次讀取文件中的字符到buffer中,並打印輸出。
三、小結
InputStreamReader是Java IO中十分重要的一個類,它的主要作用是將InputStream字節流轉換為字符流。在上述示例中,我們演示了InputStreamReader常用的read()和read(char[] cbuf, int offset, int length)方法,這兩個方法是InputStreamReader中最常用的方法。
更多有關InputStreamReader的信息,請參考官方文檔。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/161035.html