Java InputStreamReader 示例
使用 InputStreamReader 读取整个文件
只适用于读取小文件
read(char[])
方法将字符读入给定数组。必须足够大。
此方法将阻塞,直到某些输入可用、发生 I/O 错误或者到达流的末尾。
import java.io.FileInputStream; import java.io.InputStreamReader; public class InputStreamReaderExample { public static void main(String[] args) { // 创建字符数组,用于保存整个文件的内容 char[] array = new char[50]; try (InputStreamReader input = new InputStreamReader(new FileInputStream("demo.txt"))) { // 读取文件的所有字符并打印 input.read(array); System.out.println(array); } catch (Exception e) { e.getStackTrace(); } } }
Java 使用 InputStreamReader 按字符读取文件
1次只读取一个字符,直到遇到-1,表示到达文件的末尾。
import java.io.FileInputStream; import java.io.InputStreamReader; public class InputStreamReaderExample { public static void main(String[] args) { try (InputStreamReader input = new InputStreamReader(new FileInputStream("demo.txt"))) { int data = input.read(); while (data != -1) { // 打印出字符 System.out.print((char) data); data = input.read(); } } catch (Exception e) { e.getStackTrace(); } } }
创建一个 InputStreamReader
InputStreamReader
使用字节流读取文件并转换为字符流。
这意味着我们必须首先创建一个 InputStream
,然后使用这个 Reader
从流中读取字符。
在下面给出的示例中,“InputStreamReader”将从输入流“fis”中读取字符,然后从“data.txt”文件中读取字节。
设置 Charset
信息是可选的。
在这种情况下,将使用系统的默认字符集。
String file = "c:\temp\data.txt"; // 创建InputStream FileInputStream fis = new FileInputStream(file); // 创建InputStreamReader InputStreamReader isr = new InputStreamReader(fis);
欢迎 on
it
road
设置字符编码
如果从流中读取的字符采用不同的编码,则在 InputStreamReader
的构造函数中传递 Charset
信息。
String file = "c:\temp\data.txt"; FileInputStream fis = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fis, Charset.forName("UTF8"));
InputStreamReader 类
- 它充当字节流到字符流之间的桥梁。使用
InputStreamReader
,我们可以以字节为单位读取任何文件并将字节转换为所需字符集的字符。 - 它是
java.io
包的一部分。 - 它扩展了抽象类
Reader
。 - 它实现了
Closeable
、AutoCloseable
和Readable
接口。 - 它提供了从流中读取字符的方法。
Java InputStreamReader 类通常用于从文件(或者网络连接)中读取字符,其中字节表示文本。
关闭 InputStreamReader
当我们完成从流中读取时调用 inputStreamReader.close()
方法。
或者我们可以使用这个类的自动关闭功能。
在给定的示例中,try-with-resources 功能将在 try
块完全执行时自动关闭 InputStreamReader
和 FileInputStream
。
String file = "c:\temp\data.txt"; try (InputStreamReader input = new InputStreamReader(new FileInputStream(file))) { // 对文件进行操作 }
日期:2020-09-17 00:09:44 来源:oir作者:oir