Рубрики

Java.io.Reader класс в Java

Это абстрактный класс для чтения символьных потоков. Единственные методы, которые должен реализовывать подкласс, это read (char [], int, int) и close (). Однако большинство подклассов переопределяют некоторые из методов, определенных здесь, чтобы обеспечить более высокую эффективность, дополнительную функциональность или оба.
Конструкторы:

  • protected Reader (): Создает новый читатель потока символов, критические секции которого синхронизируются на самом читателе.
  • protected Reader (Object lock): Создает новое устройство чтения символьного потока, критические секции которого будут синхронизироваться с данным объектом.

Методы:

  • abstract void close (): закрывает поток и освобождает любые системные ресурсы, связанные с ним. Как только поток будет закрыт, дальнейшие вызовы read (), ready (), mark (), reset () или skip () вызовут IOException. Закрытие ранее закрытого потока не имеет никакого эффекта.
    Syntax :public abstract void close()
                        throws IOException
    Throws:
    IOException 
  • void mark (int readAheadLimit): отмечает текущую позицию в потоке. Последующие вызовы reset () будут пытаться переместить поток в эту точку. Не все потоки ввода символов поддерживают операцию mark ().
    Syntax :public void mark(int readAheadLimit)
              throws IOException
    Parameters:
    readAheadLimit - Limit on the number of characters that may be read
    while still preserving the mark. After reading this many characters, 
    attempting to reset the stream may fail.
    Throws:
    IOException 
  • boolean markSupported (): сообщает, поддерживает ли этот поток операцию mark (). Реализация по умолчанию всегда возвращает false. Подклассы должны переопределить этот метод.
    Syntax :public boolean markSupported()
    Returns:
    true if and only if this stream supports the mark operation.
  • int read (): читает один символ. Этот метод будет блокироваться до тех пор, пока символ не станет доступным, не произойдет ошибка ввода-вывода или не будет достигнут конец потока.
    Подклассы, которые намереваются поддерживать эффективный односимвольный ввод, должны переопределить этот метод.
    Syntax :public int read()
             throws IOException
    Returns:
    The character read, as an integer in the range 0 to 65535 (0x00-0xffff), 
    or -1 if the end of the stream has been reached
    Throws:
    IOException 
  • int read (char [] cbuf): читает символы в массив. Этот метод будет блокировать, пока не будет доступен какой-либо ввод, не произойдет ошибка ввода-вывода или не будет достигнут конец потока.
    Syntax :public int read(char[] cbuf)
             throws IOException
    Parameters:
    cbuf - Destination buffer
    Returns:
    The number of characters read, or -1 if the end of the stream has been reached
    Throws:
    IOException 
  • abstract int read (char [] cbuf, int off, int len): считывает символы в часть массива. Этот метод блокирует, пока не будет доступен какой-либо ввод, не произойдет ошибка ввода-вывода или не будет достигнут конец потока ,
    Syntax :public abstract int read(char[] cbuf,
           int off,
           int len)
                      throws IOException
    Parameters:
    cbuf - Destination buffer
    off - Offset at which to start storing characters
    len - Maximum number of characters to read
    Returns:
    The number of characters read, or -1 if the end of the stream has been reached
    Throws:
    IOException 
  • int read (CharBuffer target): Пытается прочитать символы в указанном буфере символов. Буфер используется как хранилище символов как есть: единственные сделанные изменения — это результаты операции put. Переворот или перемотка буфера не выполняются.
    Syntax :public int read(CharBuffer target)
             throws IOException
    Parameters:
    target - the buffer to read characters into
    Returns:
    The number of characters added to the buffer, 
    or -1 if this source of characters is at its end
    Throws:
    IOException 
    NullPointerException
    ReadOnlyBufferException
  • boolean ready (): сообщает, готов ли этот поток для чтения.
    Syntax :public boolean ready()
                  throws IOException
    Returns:
    True if the next read() is guaranteed not to block for input, false otherwise. 
    Note that returning false does not guarantee that the next read will block.
    Throws:
    IOException 
  • void reset (): Сбрасывает поток. Если поток был помечен, попытайтесь изменить его положение на отметке. Если поток не был отмечен, попытайтесь сбросить его каким-либо образом, соответствующим конкретному потоку, например, переместив его в начальную точку. Не все потоки ввода символов поддерживают операцию сброса (), а некоторые поддерживают сброс () без поддержки метки ().
    Syntax :public void reset()
               throws IOException
    Throws:
    IOException
  • long skip (long n): пропускает символы. Этот метод блокируется, пока не будут доступны некоторые символы, не произойдет ошибка ввода-вывода или не будет достигнут конец потока.
    Syntax :public long skip(long n)
              throws IOException
    Parameters:
    n - The number of characters to skip
    Returns:
    The number of characters actually skipped
    Throws:
    IllegalArgumentException - If n is negative.
    IOException

// Java-программа, демонстрирующая методы Reader

import java.io.*;

import java.nio.CharBuffer;

import java.util.Arrays;

class ReaderDemo

{

    public static void main(String[] args) throws IOException

    {

        Reader r = new FileReader("file.txt");

        PrintStream out = System.out;

        char c[] = new char[10];

        CharBuffer cf = CharBuffer.wrap(c);

  

        // иллюстрирующий markSupported ()

        if(r.markSupported()) {

            // иллюстрирующая метка ()

            r.mark(100);

            out.println("mark method is supported");

        }

        // пропускаем 5 символов

        r.skip(5);

  

        // проверка, готов ли этот поток для чтения.

        if(r.ready()) 

        {

            // иллюстрируем read (char [] cbuf, int off, int len)

            r.read(c,0,10);

            out.println(Arrays.toString(c));

  

            // иллюстрируем чтение (цель CharBuffer)

            r.read(cf);

            out.println(Arrays.toString(cf.array()));

              

            // иллюстрирующий read ()

            out.println((char)r.read());

        }

        // закрываем поток

        r.close();

    }

}

Выход :

[f, g, h, i, g, k, l, m, n, o]
[p, q, r, s, t, u, v, w, x, y]
z

Эта статья предоставлена Nishant Sharma . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Java.io.Reader класс в Java

0.00 (0%) 0 votes