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
  • 它实现了 CloseableAutoCloseableReadable接口。
  • 它提供了从流中读取字符的方法。
Java InputStreamReader 类

Java InputStreamReader 类通常用于从文件(或者网络连接)中读取字符,其中字节表示文本。

关闭 InputStreamReader

当我们完成从流中读取时调用 inputStreamReader.close()方法。
或者我们可以使用这个类的自动关闭功能。

在给定的示例中,try-with-resources 功能将在 try块完全执行时自动关闭 InputStreamReaderFileInputStream

String file = "c:\temp\data.txt";
try (InputStreamReader input 
		= new InputStreamReader(new FileInputStream(file))) {
	// 对文件进行操作
}
日期:2020-09-17 00:09:44 来源:oir作者:oir