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