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)文章
Spring Cloud Gateway內(nèi)置的斷言和過濾器作用說明
這篇文章主要介紹了Spring Cloud Gateway內(nèi)置的斷言和過濾器作用說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
SpringBoot集成IJPay實(shí)現(xiàn)微信v3支付的示例代碼
本文主要介紹了SpringBoot集成IJPay實(shí)現(xiàn)微信v3支付的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
SpringBoot集成Druid連接池進(jìn)行SQL監(jiān)控的問題解析
這篇文章主要介紹了SpringBoot集成Druid連接池進(jìn)行SQL監(jiān)控的問題解析,在SpringBoot工程中引入Druid連接池非常簡單,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-07-07
Springboot如何同時(shí)裝配兩個(gè)相同類型數(shù)據(jù)庫
這篇文章主要介紹了Springboot如何同時(shí)裝配兩個(gè)相同類型數(shù)據(jù)庫,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
Java中String字符串常量池和intern方法源碼分析
在之前的文章中,小編給大家介紹了String字符串的不可變性及其實(shí)現(xiàn)原理,其中給大家提到了字符串常量池的概念,那么什么是常量池,String字符串與常量池有什么關(guān)系,本文給大家嘮嘮字符串常量池及String#intern()方法的作用,需要的朋友可以參考下2023-05-05

