Files copy() Method in Java with Examples

10 Jun, 2022
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.
Using copy(InputStream in, Path target, CopyOption... options) MethodUsing copy(Path source, OutputStream out) MethodUsing copy(Path source, Path target, CopyOption... options) Method
Using copy(InputStream in, Path target, CopyOption... options) Method
Using copy(Path source, OutputStream out) Method
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
// Impoerting classes from java.nio package as// this package is responsible for network linkingimport 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 Classpublic 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
// Impoerting classes from java.nio package as// this package is responsible for network linkingimport 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 Classpublic 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
// Impoerting classes from java.nio package as// this package is responsible for network linkingimport java.io.IOException;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.nio.file.StandardCopyOption; // Main Classpublic 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 
gabaa406
nikhatkhan11
Java-Files
Java
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.