Java.io.CharArrayReader Class in Java

CharArrayReader Class in Java
java.io.CharArrayReader class creates a character buffer using a character array.

Declaration:

public class CharArrayReader
   extends Reader

Constructor :



  • CharArrayReader(char[] char_array) : Creates a CharArrayReader from a specified character array.
  • CharArrayReader(char[] char_array, int offset, int maxlen) : Creates a CharArrayReader from a specified part of character array.

Methods:

  • read() : java.io.CharArrayReader.read() reads a single character and returns  -1 if end of the Stream is reached.
    Syntax :

    public int read()
    Parameters : 
    -----------
    Return  :
    Returns read character as an integer ranging from range 0 to 65535.
    -1 : when end of file is reached.
  • read(char[] char_array, int offset, int maxlen) : java.io.CharArrayReader.read(char[] char_array, int offset, int maxlen)) reads a single character and returns -1 if end of the Stream is reached
    Syntax :

    public int read(char[] char_array, int offset, int maxlen))
    Parameters : 
    char_array : destination array  
    offset : starting position from where to store characters
    maxlen : maximum no. of characters to be read
    Return  :
    Returns all the characters read
    -1 : when end of file is reached.
  • ready() : java.io.CharArrayReader.ready() checks whether the Stream is ready to be read or not.
    CharArrayReader are always ready to be read.
    Syntax :

    public boolean ready()
    Parameters : 
    -----------
    Return  :
    true if CharArrayReader is ready to be read.
  • skip(long char) : java.io.CharArrayReader.skip(long char_no) skips ‘char_no’ no. of characters.  If n is negative, then this method does nothing and returns 0.
    Syntax :

    public long skip(long char)
    Parameters : 
    char_no : char no. of characters to be skipped
    Return  :
    no. of characters skipped
    Exception : 
    IOException : In case of I/O error occurs
filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program illustrating the working of CharArrayReader class methods
// read(), skip(), ready()
// read(char[] char_array, int offset, int maxlen)
  
import java.io.*;
public class NewClass
{
    public static void main(String[] args) throws IOException
    {
  
        // Initailizing the character array
        char[] geek = {'G', 'E', 'E', 'K', 'S'};
  
        // Initailizing the char_array
        CharArrayReader char_array1 = new CharArrayReader(geek);
        CharArrayReader char_array2 = new CharArrayReader(geek);
  
        // Use of ready() method
        boolean check1 = char_array1.ready();
        if(check1 ==true)
            System.out.println("char_array1 is ready");
        else
            System.out.println("char_array1 is not ready");
  
  
        int a = 0;
        System.out.print("Use of read() method : ");
        // Use of read() method : reading each character one by one
        while((a = char_array1.read()) != -1)
        {
            char c1 = (char)a;
            System.out.println(c1);
  
            // Use of skip() method
            long char_no = char_array1.skip(1);
            System.out.println("Characters Skipped : "+(c1+1));
  
        }
        System.out.println("");
  
  
        // Use of ready() method
        boolean check2 = char_array2.ready();
        if(check2 ==true)
            System.out.println("char_array2 is ready");
        else
            System.out.println("char_array2 is not ready");
  
  
  // Use of read(char[] char_array, int offset, int maxlen) : reding a part of array
        char_array2.read(geek, 1, 2);
  
        int b = 0;
  
  System.out.print("Use of read(char[] char_array, int offset, int maxlen) method : ");
  
        while((b = char_array2.read()) != -1)
        {
            char c2 = (char)b;
            System.out.print(c2);
        }
  
    }
}

chevron_right


Output :

char_array1 is ready
Use of read() method : G
Characters Skipped : 72
E
Characters Skipped : 70
S
Characters Skipped : 84

char_array2 is ready
Use of read(char[] char_array, int offset, int maxlen) method : EKS
  • mark(int readLimit) : java.io.CharArrayReader.mark(int readLimit) marks the current position in the Stream upto which the character can be read. This method always invokes reset() method. Subsequent calls to reset() will reposition the stream to this point.
    Syntax :

    public long mark(int readLimit)
    Parameters : 
    readLimit : No. of characters that can be read up to the mark
    Return  :
    void
    Exception : 
    IOException : In case of I/O error occurs
  • markSupported() : java.io.CharArrayReader.markSupported() tells whether the mark method is supported by the stream or not.
    Syntax :

    public boolean markSupported()
    Parameters : 
    -------
    Return  :
    true if the mark method is supported by the stream
    Exception : 
    IOException : In case of I/O error occurs
  • reset() : java.io.CharArrayReader.reset() Resets the stream to the most recent mark, or to the beginning if it has never been marked.
    Syntax :

    public void reset()
    Parameters : 
    -------
    Return  :
    void
    Exception : 
    IOException : In case of I/O error occurs
  • close() : java.io.CharArrayReader.close() closes the stream amd reallocates the resources that were allotted to it.
    Syntax :

    public void close()
    Parameters : 
    -------
    Return  :
    void
    Exception : 
    IOException : In case of I/O error occurs
filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program illustrating the working of FilterInputStream method
// mark(), reset()
// markSupported(), close()
  
import java.io.*;
public class NewClass
{
    public static void main(String[] args) throws Exception
    {
        // Initializing CharArrayReader
        CharArrayReader char_array = null;
        char[] geek = {'H', 'E', 'L', 'L', 'O', 'G''E''E''K', 'S'};
  
        try
        {
            char_array = new CharArrayReader(geek);
  
            // read() method : reading and printing Characters
            // one by one
            System.out.println("Char : "+(char)char_array.read());
            System.out.println("Char : "+(char)char_array.read());
            System.out.println("Char : "+(char)char_array.read());
  
            // mark() : read limiing the 'geek' input stream
            char_array.mark(0);
  
            System.out.println("mark() method comes to play");
            System.out.println("Char : "+(char)char_array.read());
            System.out.println("Char : "+(char)char_array.read());
            System.out.println("Char : "+(char)char_array.read());
  
            // Use of markSupported() :
            boolean check = char_array.markSupported();
            if (check == true )
                System.out.println("mark() supported\n");
  
            if (char_array.markSupported())
            {
                // reset() method : repositioning the stream to
                // marked positions.
                char_array.reset();
                System.out.println("reset() invoked");
                System.out.println("Char : "+(char)char_array.read());
                System.out.println("Char : "+(char)char_array.read());
            }
            else
                System.out.println("mark() method not supported.");
              
        }
        catch(Exception excpt)
        {
            // in case of I/O error
            excpt.printStackTrace();
        }
        finally
        {
            // Use of close() : releasing the resources back to the
            // GarbageCollector when closes
            if(char_array != null)
                char_array.close();
        }
    }
}

chevron_right


Output :

Char : H
Char : E
Char : L
mark() method comes to play
Char : L
Char : O
Char : G
mark() supported

reset() invoked
Char : L
Char : O

This article is contributed by Mohit Gupta 🙂. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up


Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.