Java InputStreamReader

原文:https://www.studytonight.com/java-file-io/java-inputstreamreader

在本教程中,我们将学习 Java 中的InputStreamReader 类。这个类扩展了一个抽象类Reader。这个类将数据从字节格式转换成字符。

构造器

下表给出了InputStreamReader 类支持的构造器的所有变体。

构造器 描述
InputStreamReader(InputStream in) 此方法创建一个使用默认字符集的 InputStreamReader。
InputStreamReader(InputStream in, Charset cs) 此方法创建一个使用给定字符集的 InputStreamReader。
InputStreamReader(InputStream in, CharsetDecoder dec) 此方法创建一个使用给定字符集解码器的 InputStreamReader。
InputStreamReader(InputStream in, String charsetName) 此方法创建一个使用命名字符集的 InputStreamReader。

方法

InputStreamReader 类的方法如下表所示:

方法 描述
无效关闭() 此方法关闭流并释放与其关联的任何系统资源。
String getEncoding() 此方法返回此流使用的字符编码的名称。
int read() 此方法读取单个字符。
int read(char[] cbuf, int offset, int length) 此方法将字符读入数组的一部分。
布尔就绪() 这个方法告诉这个流是否准备好被读取。

例 1

在下面的例子中,我们实现了InputStreamReader 从文件中读取数据。首先,我们通过在构造器中传递文件路径,使用 FileInputStream 类创建了一个输入流。然后使用 read()方法,我们逐个读取每个字符,直到流到达末尾。当我们到达流的末尾时,它返回-1。

package studytonight;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
public class StudyTonight 
{
    public static void main(String args[])
    {
        try  {  
            InputStream stream = new FileInputStream("E:\\studytonight\\output.txt");  
            Reader reader = new InputStreamReader(stream);  
            int data = reader.read();  
            while (data != -1) {  
                System.out.print((char) data);  
                data = reader.read();  
            }  
        } catch (Exception e) {  
            System.out.print("Error: "+e.toString());
        }  
    }
}

你好,今晚学习

输出. txt

Hello Studytonight

InputStreamReader示例

在这个例子中,我们正在学习InputStreamReader 课的 getEncoding()方法。此方法将返回给定InputStreamReader的字符编码。如果在这种情况下没有明确提到编码,它将返回默认编码。在这个例子中,我们将编码设置为 UTF8,我们可以在输出中看到它

package studytonight;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
public class StudyTonight 
{
    public static void main(String args[])
    {
        try{  
            FileInputStream file = new FileInputStream("E:\\studytonight\\output.txt");  
            InputStreamReader reader = new InputStreamReader(file, Charset.forName("UTF8"));              
            System.out.println("Character Encoding of the reader is: "+reader.getEncoding());
        }
        catch (Exception e)    {  
            System.out.print("Error: "+e.toString());
        }  
    }
}

读取器的字符编码为:UTF8

结论

在本教程中,我们学习了InputStreamReader 类及其方法,该类将数据从字节格式转换为字符。