Open In App
Related Articles

Files copy() Method in Java with Examples

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report

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 copying 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

// Importing 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 occurred
            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

// Importing 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 occurred
            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 copying 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

// Importing 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 occurred
            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 


Last Updated : 20 Jul, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads