一、概述
Java 中,InputStreamReader 是常用的 I/O 類之一。它繼承於Reader類,是字節流到字符流的橋樑,通常用於將字節流轉換為字符流。
它的構造函數中需要指定一個字節流,並且可以指定字符集。指定的字符集可以是系統默認的,也可以是指定的字符集。
二、用法
InputStream inputStream = new FileInputStream("path/to/file");Reader reader = new InputStreamReader(inputStream);//使用系統默認的字符集Reader reader1 = new InputStreamReader(inputStream, "UTF-8");//使用指定字符集
構造函數中指定字符集,使用指定的字符集將字節流轉換為字符流,同樣可以用指定的字符集將字符流轉換為字節流。
三、應用舉例
從文件中讀取內容並輸出:
public static void readFromFile()throws IOException{ InputStream inputStream = new FileInputStream("path/to/file"); Reader reader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(reader); String line = null; while((line = bufferedReader.readLine()) != null){ System.out.println(line); } reader.close(); inputStream.close();}
從網絡中讀取內容並輸出:
public static void readFromInternet() throws IOException { URL url = new URL("http://www.example.com"); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); InputStream inputStream = urlConnection.getInputStream(); Reader reader = new InputStreamReader(inputStream, "UTF-8"); BufferedReader bufferedReader = new BufferedReader(reader); String line = null; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } reader.close(); inputStream.close();}
四、優化
為了更好的性能,可以使用 BufferedInputStream、BufferedReader、BufferedWriter 等緩存類。
public static void readFromFile() throws IOException { InputStream inputStream = new FileInputStream("path/to/file"); BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); Reader reader = new InputStreamReader(bufferedInputStream); BufferedReader bufferedReader = new BufferedReader(reader); String line = null; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } reader.close(); bufferedInputStream.close();}
五、總結
InputStreamReader 在 Java 開發中是非常常用的 I/O 類之一,可以將字節流轉換為字符流,用於讀取文件、網絡等字節流數據。此外,一些優化手段,如緩存,可以提高性能。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/192656.html