Copy Reader to OutputStream in Java using Apache Commons IO

Tags: Copy IOUtils Apache Commons Apache Commons IO Reader FileReader OutputStream FileOutputStream

In this Java tutorial we learn how to copy bytes from a Reader object into OutputStream object using IOUtils utility class of Apache Commons IO library.

How to add Apache Commons IO library to your Java project

To use the Apache Commons IO library in the Gradle build project, add the following dependency into the build.gradle file.

implementation 'commons-io:commons-io:2.8.0'

To use the Apache Commons IO library in the Maven build project, add the following dependency into the pom.xml file.

<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>2.8.0</version>
</dependency>

To have more information about the Apache Commons IO library you can visit the library home page at commons.apache.org/proper/commons-io/

How to copy bytes from Reader object to OutputStream object

The following Java program, we copy the file content from data.txt file into data-output.txt file using IOUtils.copy() method.

CopyReaderToOutputStream.java

import org.apache.commons.io.IOUtils;

import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Reader;

public class CopyReaderToOutputStream {
    public static void main(String... args) {
        try {
            Reader reader = new FileReader("D:\\Data\\data.txt");
            OutputStream outputStream = new FileOutputStream("D:\\Data\\data-out.txt");

            IOUtils.copy(reader, outputStream, "UTF-8");

            IOUtils.close(reader);
            IOUtils.close(outputStream);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Happy Coding 😊