Java Reader

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

在本教程中,我们将学习 Java 中的Reader类。这是一个抽象类,对于读取字符流非常有用。我们不能直接使用这个类,但是这个类的子类非常有用。

读者类的子类

  • 档案管理员
  • 档案管理员
  • StringReader

构造器

下面给出了这个类的构造器的所有变体。

构造器 描述
protected Reader() 它创建了一个新的字符流读取器,其关键部分将在读取器上同步。
protected Reader(Object lock) 它创建了一个新的字符流读取器,其关键部分将在给定的对象上同步。

方法

Reader 类支持的方法如下。

方法 描述
abstract void close() 此方法关闭流并释放与其关联的任何系统资源。
void mark(int readAheadLimit) 此方法标记流中的当前位置。
boolean markSupported() 此方法告知此流是否支持 mark()操作。
int read() 此方法读取单个字符。
int read(char[] cbuf) 此方法将字符读入数组。
abstract int read(char[] cbuf, int off, int len) 此方法将字符读入数组的一部分。
int read(CharBuffer target) 此方法尝试将字符读入指定的字符缓冲区。
boolean ready() 这个方法告诉这个流是否准备好被读取。
void reset() 此方法重置流。
long skip(long n) 此方法跳过字符。

例子

在下面的例子中,我们使用Reader 类读取数据。首先,我们使用FileReader类创建了一个读取器对象,然后使用 read()方法读取数据。

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

你好,今晚学习

输出. txt

Hello Studytonight

使用Reader类读取字符数组

在下面的示例中,我们使用 read()方法从文件中读取数据,该方法接受 char 数组作为具有起始偏移量和长度的参数。基本上,我们读取数据并将其存储在字符数组中。

package studytonight;
import java.io.FileReader;
import java.io.Reader;
public class StudyTonight 
{
    public static void main(String args[])
    {
        try
        {               
            Reader reader = new FileReader("E:\\studytonight\\output.txt");  
            char[] array = new char[128];
            int charsRead = reader.read(array, 0, array.length);
            while(charsRead != -1) {
                System.out.println(new String(array, 0, charsRead));
                charsRead = reader.read(array, 0, array.length);
            }

        }
        catch(Exception e)
        {
            System.out.println("Error: "+e.toString());
        }
    }
}

你好,今晚学习

输出. txt

Hello Studytonight

结论:

在本教程中,我们学习了 Java 中的Reader 类。这个类是所有Reader 子类的基类。这个类像输入流一样工作,唯一的区别是它是基于字符的,而不是基于字节的。