一、概述
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/n/192656.html