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.

java_io_pipedreader.htm
Advertisements