Skip to content
Related Articles

Related Articles

Files copy() Method in Java with Examples
  • Last Updated : 29 Mar, 2021

The copy() method of java.nio.file.Files Class is used to copy bytes from a file to I/O streams or from I/O streams to a file. I/O Stream means an input source or output destination representing different types of sources e.g. disk files.

Methods: Based on the type of arguments passed, the Files class provides 3 types of copy() method.

  1. Using copy(InputStream in, Path target, CopyOption… options) Method
  2. Using copy(Path source, OutputStream out) Method
  3. Using copy(Path source, Path target, CopyOption… options) Method

Method 1: Using copy(InputStream in, Path target, CopyOption… options) Method

 This method is used to copy all bytes from an input stream to a file.

Parameters:



  • in: The input stream whose the data will be copied
  • target: The path of the file where data will be copied
  • options: Options describing the ways in which the data will be copied

Return Type: Number of copied bytes

Exceptions:

  • IOException: If while reading or writing an error occurred
  • FileAlreadyExistsException: If the target file already exists and can not be replaced
  • DirectoryNotEmptyException: If the target file can not be replaced because it is a non-empty directory
  • UnsupportedOperationException: If the way of coping described by an option is not supported
  • SecurityException: If the write access to the target file is denied by the security manager

Implementation:

Example

Java




// Impoerting classes from java.nio package as
// this package is responsible for network linking
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
  
// Main Class
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
        // Input custom string
        String text = "geeksforgeeks";
  
        // Path of the file where data is to be copied
        Path path = (Path)Paths.get("/usr", "local", "bin",
                                    "fileIn.txt");
  
        System.out.println("Path of target file: "
                           + path.toString());
  
        // Byte stream whose data is to be copied
        InputStream in
            = new ByteArrayInputStream(text.getBytes());
  
        // Try block to check for exceptions
        try {
  
            // Printing number of copied bytes
            System.out.println(
                "Number of bytes copied: "
                + Files.copy(
                    in, path,
                    StandardCopyOption.REPLACE_EXISTING));
        }
  
        // Catch block to handle the exceptions
        catch (IOException e) {
  
            // Print the line number where exception occured
            e.printStackTrace();
        }
    }
}

Output:

Path of target file: /usr/local/bin/fileIn.txt
Number of bytes copied: 13

Method 2: Using copy(Path source, OutputStream out) Method

This method is used to copy all bytes from a file to an output stream.



Parameters: It takes two namely 

  • source: The path of the file whose data will be copied
  • out: The output stream where the copied data will be written

Return Type: Number of copied bytes

Exceptions: 

  • IOException: If while reading or writing an error occurred
  • SecurityException: If the read access to the target file is denied by the security manager

Implementation:

Example

Java




// Impoerting classes from java.nio package as
// this package is responsible for network linking
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
  
// Main Class
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
  
        // Path of file whose data is to be copied
        Path path = (Path)Paths.get("/usr", "local", "bin",
                                    "fileOut.txt");
  
        // Getting the path of source file
        System.out.println("Path of source file: "
                           + path.toString());
  
        // Output stream where data is to written
        OutputStream out = new ByteArrayOutputStream();
  
        // Try block to check for exceptions
        try {
            // Printing number of copied bytes
            System.out.println("Number of bytes copied: "
                               + Files.copy(path, out));
        }
  
        // Catch block to handle the exception
        catch (IOException e) {
  
            // Print the line number where exception occured
            e.printStackTrace();
        }
    }
}

Output:

Path of source file: /usr/local/bin/fileOut.txt
Number of bytes copied: 13

Method 3: Using copy(Path source, Path target, CopyOption… options) Method

This method is used to copy a file to a target file.

Parameters:

  • source: The path of the file whose data will be copied
  • target: The path of the file where data will be copied
  • options: Options describing the ways in which the data will be copied

Return Type: The path to the file where data is copied

Exceptions: 

  • IOException: If while reading or writing an error occurred
  • FileAlreadyExistsException: If the target file already exists and can not be replaced
  • DirectoryNotEmptyException: If the target file can not be replaced because it is a non-empty directory
  • UnsupportedOperationException: If the way of coping described by an option is not supported
  • SecurityException: If the write access to the target file is denied by the security manager

Implementation:

Example

Java




// Impoerting classes from java.nio package as
// this package is responsible for network linking
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
  
// Main Class
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
        // Path of file where data is to copied
        Path pathIn = (Path)Paths.get("/usr", "local",
                                      "bin", "fileIn.txt");
        // Path of file whose data is to be copied
        Path pathOut = (Path)Paths.get(
            "/usr", "local", "bin", "fileOut.txt");
  
        System.out.println("Path of target file: "
                           + pathIn.toString());
  
        System.out.println("Path of source file: "
                           + pathOut.toString());
  
        // Try block to check for exceptions
        try {
  
            // Printing number of bytes copied
            System.out.println(
                "Number of bytes copied: "
                + Files.copy(
                    pathOut, pathIn,
                    StandardCopyOption.REPLACE_EXISTING));
        }
  
        // Catch block to handle the exceptions
        catch (IOException e) {
  
            // Print the line number where exception occured
            e.printStackTrace();
        }
    }
}

Output:

Path of target file: /usr/local/bin/fileIn.txt
Path of source file: /usr/local/bin/fileOut.txt
Number of bytes copied: 13

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up
Recommended Articles
Page :