Java中的轉換流InputStreamReader解讀
Java轉換流InputStreamReader
1. InputStreamReader 簡介
InputStreamReader 是 Java.io 包中的一個類,它繼承了 java.io.Reader 類。
其主要作用是將字節(jié)輸入流轉換為字符輸入流。
在進行文件讀寫操作時,如果遇到不同編碼格式,可以使用 InputStreamReader 進行處理。
2. InputStreamReader 構造方法
InputStreamReader 提供了以下兩個構造方法:
- (1)InputStreamReader(InputStream in) 使用默認字符集創(chuàng)建一個 InputStreamReader 實例。
- (2)InputStreamReader(InputStream in, Charset cs) 使用指定的字符集創(chuàng)建一個 InputStreamReader 實例。
3. InputStreamReader 常用方法
以下是 InputStreamReader 的一些常用方法:
- (1)int read() 讀取一個字符,返回讀取的字符,如果達到文件末尾,則返回 -1。
- (2)int read(char[] cbuf, int offset, int length) 將字符讀入數(shù)組的一部分,返回讀取的字符數(shù),如果達到文件末尾,則返回 -1。
- (3)boolean ready() 判斷 InputStreamReader 是否準備好讀取數(shù)據(jù)。
- (4)void close() 關閉 InputStreamReader 并釋放相關資源。
4. 代碼示例及運行結果
以下是一個簡單的示例,演示如何使用 InputStreamReader 讀取一個文本文件:
import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.IOException; public class InputStreamReaderExample { public static void main(String[] args) { try { // 創(chuàng)建 FileInputStream 實例 FileInputStream fis = new FileInputStream("example.txt"); // 創(chuàng)建 InputStreamReader 實例,使用默認字符集 InputStreamReader isr = new InputStreamReader(fis); // 讀取文件內(nèi)容 int data; while ((data = isr.read()) != -1) { System.out.print((char) data); } // 關閉流 isr.close(); fis.close(); } catch (IOException e) { e.printStackTrace(); } } }
假設 example.txt 文件內(nèi)容如下:
Hello, World!
你好,世界!
運行上述代碼,輸出結果如下:
Hello, World!
你好,世界!
接下來,我們使用指定字符集讀取文件:
import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.IOException; import java.nio.charset.Charset; public class InputStreamReaderExample2 { public static void main(String[] args) { try { // 創(chuàng)建 FileInputStream 實例 FileInputStream fis = new FileInputStream("example.txt"); // 創(chuàng)建 InputStreamReader 實例,指定字符集為 UTF-8 InputStreamReader isr = new InputStreamReader(fis, Charset.forName("UTF-8")); // 讀取文件內(nèi)容 int data; while ((data = isr.read()) != -1) { System.out.print((char) data); } // 關閉流 isr.close(); fis.close(); } catch (IOException e) { e.printStackTrace(); } } }
運行結果與上一個示例相同,因為 example.txt 文件的編碼格式為 UTF-8。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解SpringBoot?統(tǒng)一后端返回格式的方法
今天我們來聊一聊在基于SpringBoot前后端分離開發(fā)模式下,如何友好的返回統(tǒng)一的標準格式以及如何優(yōu)雅的處理全局異常,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2022-05-05java實現(xiàn)對excel文件的處理合并單元格的操作
這篇文章主要介紹了java實現(xiàn)對excel文件的處理合并單元格的操作,開頭給大家介紹了依賴引入代碼,表格操作的核心代碼,代碼超級簡單,需要的朋友可以參考下2021-07-07java常見報錯:Array?Out?of?Bounds兩種解決辦法
這篇文章主要給大家介紹了關于java報錯Array?Out?of?Bounds的兩種解決辦法,Array out of bounds錯誤表示你嘗試訪問數(shù)組中不存在的索引,即索引小于零或者大于等于數(shù)組的大小,文中通過代碼將解決的辦法介紹的非常詳細,需要的朋友可以參考下2024-08-08JDK8新特性-java.util.function-Function接口使用
這篇文章主要介紹了JDK8新特性-java.util.function-Function接口使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04