- Java.io - Home
- Java.io - BufferedInputStream
- Java.io - BufferedOutputStream
- Java.io - BufferedReader
- Java.io - BufferedWriter
- Java.io - ByteArrayInputStream
- Java.io - ByteArrayOutputStream
- Java.io - CharArrayReader
- Java.io - CharArrayWriter
- Java.io - Console
- Java.io - DataInputStream
- Java.io - DataOutputStream
- Java.io - File
- Java.io - FileDescriptor
- Java.io - FileInputStream
- Java.io - FileOutputStream
- Java.io - FilePermission
- Java.io - FileReader
- Java.io - FileWriter
- Java.io - FilterInputStream
- Java.io - FilterOutputStream
- Java.io - FilterReader
- Java.io - FilterWriter
- Java.io - InputStream
- Java.io - InputStreamReader
- Java.io - LineNumberInputStream
- Java.io - LineNumberReader
- Java.io - ObjectInputStream
- Java.io - ObjectInputStream.GetField
- Java.io - ObjectOutputStream
- io - ObjectOutputStream.PutField
- Java.io - ObjectStreamClass
- Java.io - ObjectStreamField
- Java.io - OutputStream
- Java.io - OutputStreamWriter
- Java.io - PipedInputStream
- Java.io - PipedOutputStream
- Java.io - PipedReader
- Java.io - PipedWriter
- Java.io - PrintStream
- Java.io - PrintWriter
- Java.io - PushbackInputStream
- Java.io - PushbackReader
- Java.io - RandomAccessFile
- Java.io - Reader
- Java.io - SequenceInputStream
- Java.io - SerializablePermission
- Java.io - StreamTokenizer
- Java.io - StringBufferInputStream
- Java.io - StringReader
- Java.io - StringWriter
- Java.io - Writer
- Java.io package Useful Resources
- Java.io - Discussion
Java - Reader read(char[] cbuf,int off,int len) method
Description
The Java Reader read(char[] cbuf,int off,int len) method reads characters into a portion of an array. This method will block until some input is available, an I/O error occurs, or the end of the stream is reached.
Declaration
Following is the declaration for java.io.Reader.read(char[] cbuf,int off,int len) method.
public abstract int read(char[] cbuf,int off,int len)
Parameters
cbuf − Destination buffer.
off − Offset at which to start storing characters.
len − Maximum number of characters to read.
Return Value
This method returns the number of characters read, or -1 if the end of the stream has been reached.
Exception
IOException − if some I/O error occurs.
Example - Usage of Reader read(char[] cbuf,int off,int len) method
The following example shows the usage of Reader read(char[] cbuf,int off,int len) method.
ReaderDemo.java
package com.tutorialspoint;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
public class ReaderDemo {
public static void main(String[] args) {
String s = "Hello world";
// create a StringReader
Reader reader = new StringReader(s);
// create a char array to read chars into
char cbuf[] = new char[5];
try {
// read characters into a portion of an array.
System.out.println( reader.read(cbuf, 0, 5));
// print cbuf
System.out.println(cbuf);
// close the stream
reader.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
Output
Let us compile and run the above program, this will produce the following result −
5 Hello
Example - Reading into a portion of a character array
The following example shows the usage of Reader read(char[] cbuf,int off,int len) method.
ReaderDemo.java
package com.tutorialspoint;
import java.io.StringReader;
import java.io.IOException;
public class ReaderDemo {
public static void main(String[] args) {
String data = "ABCDEFG";
try (StringReader reader = new StringReader(data)) {
char[] buffer = new char[10];
// Fill initial buffer to show unused areas later
for (int i = 0; i < buffer.length; i++) {
buffer[i] = '-';
}
int charsRead = reader.read(buffer, 2, 5); // Start at index 2, read 5 characters
System.out.println("Characters read: " + charsRead);
System.out.println("Buffer content: " + new String(buffer));
} catch (IOException e) {
e.printStackTrace();
}
}
}
Output
Let us compile and run the above program, this will produce the following result−
Characters read: 5 Buffer content: --ABCDE---
Explanation
We read 5 characters starting at index 2 in the buffer.
Unused positions (like index 0 and 1) remain as '-' to visualize where data was placed.
Example - Multiple reads with different offsets
The following example shows the usage of Reader read(char[] cbuf,int off,int len) method.
ReaderDemo.java
package com.tutorialspoint;
import java.io.StringReader;
import java.io.IOException;
public class ReaderDemo {
public static void main(String[] args) {
String data = "123456789";
try (StringReader reader = new StringReader(data)) {
char[] buffer = new char[10];
int read1 = reader.read(buffer, 0, 4); // Fill from index 0
int read2 = reader.read(buffer, 5, 3); // Fill from index 5
System.out.println("First read (" + read1 + " chars): " + new String(buffer, 0, read1));
System.out.println("Second read (" + read2 + " chars): " + new String(buffer, 5, read2));
System.out.println("Full buffer: " + new String(buffer));
} catch (IOException e) {
e.printStackTrace();
}
}
}
Output
Let us compile and run the above program, this will produce the following result−
First read (4 chars): 1234 Second read (3 chars): 567 Full buffer: 1234567
Explanation
First, we read 4 characters into the beginning of the buffer.
Then, we read the next 3 characters into a different part of the buffer (index 5).