- 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 - PipedReader close() method
Description
The Java PipedReader close() method closes this piped stream and releases any system resources associated with the stream.
Declaration
Following is the declaration for java.io.PipedReader.close() method.
public void close()
Parameters
NA
Return Value
This method does not return a value.
Exception
IOException − If an I/O error occurs.
Example - Usage of PipedReader close() method
The following example shows the usage of PipedReader close() method.
PipedReaderDemo.java
package com.tutorialspoint;
import java.io.IOException;
import java.io.PipedReader;
import java.io.PipedWriter;
public class PipedReaderDemo {
public static void main(String[] args) {
// create a new Piped writer and reader
PipedWriter writer = new PipedWriter();
PipedReader reader = new PipedReader();
try {
// connect the reader and the writer
reader.connect(writer);
// write something
writer.write(70);
writer.write(71);
// read what we wrote
for (int i = 0; i < 2; i++) {
System.out.println("" + (char) reader.read());
}
// close the reader
System.out.println("Closing reader...");
reader.close();
System.out.println("Reader closed.");
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
Output
Let us compile and run the above program, this will produce the following result −
F G Closing reader... Reader closed.
Example - Closing a PipedReader after reading from a connected PipedWriter
The following example shows the usage of PipedReader close() method.
PipedReaderDemo.java
package com.tutorialspoint;
import java.io.PipedReader;
import java.io.PipedWriter;
import java.io.IOException;
public class PipedReaderDemo {
public static void main(String[] args) {
try {
PipedReader reader = new PipedReader();
PipedWriter writer = new PipedWriter(reader); // Connect streams
writer.write("Hello, Reader!");
writer.close(); // Finish writing
int data;
while ((data = reader.read()) != -1) {
System.out.print((char) data);
}
reader.close(); // Close the reader after reading is complete
System.out.println("\nPipedReader closed successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Output
Let us compile and run the above program, this will produce the following result−
Hello, Reader! PipedReader closed successfully.
Explanation
The close() method is used to release system resources held by the PipedReader.
After the data is fully read, closing the stream is necessary to avoid resource leaks.
Always close both ends (PipedReader and PipedWriter) when done.
Example - Using close() in a consumer thread
The following example shows the usage of PipedReader close() method.
PipedReaderDemo.java
package com.tutorialspoint;
import java.io.PipedReader;
import java.io.PipedWriter;
import java.io.IOException;
public class PipedReaderDemo {
public static void main(String[] args) throws IOException {
PipedReader reader = new PipedReader();
PipedWriter writer = new PipedWriter(reader); // Connect the pipe
Thread producer = new Thread(() -> {
try {
writer.write("Streaming data to reader...");
writer.close(); // Signal end of data
} catch (IOException e) {
e.printStackTrace();
}
});
Thread consumer = new Thread(() -> {
try {
int ch;
while ((ch = reader.read()) != -1) {
System.out.print((char) ch);
}
reader.close(); // Close reader after reading is done
System.out.println("\nReader closed.");
} catch (IOException e) {
e.printStackTrace();
}
});
producer.start();
consumer.start();
}
}
Output
Let us compile and run the above program, this will produce the following result−
Streaming data to reader... Reader closed.
Explanation
The producer writes characters to the PipedWriter and then closes it.
The consumer reads from the PipedReader, and once done, calls close() to clean up.
Properly closing the reader prevents memory/resource leaks in long-running applications.