How to Copy a File in Java Program - Example Tutorial (original) (raw)
How to copy files in Java from one directory to another is a common requirement, given that there is no direct method in File API for copying files from one location to another. A painful way of copying files is reading from FileInputStream and writing the same data to FileOutputStream to another directory. Though this process works it's pretty raw to work with and the best approach is for anyone to create a library for common File operations like cut, copy, paste, etc.
Thankfully you don't need to reinvent the wheel here, there are some open-source libraries available which allows us to copy file in Java easily from one directory to another.
One such library is Apache commons IO which contains a class called FileUtils, which provides a utility method for file-related operations. FileUtils.copyFile(sourceFile, targetFile) can be used to copy files in Java. This Java program copy file from one location to other using FileUtils class.
Java Program to copy file in Java - Example Code:
Below is the complete code example of copying one file in Java. We need to provide the absolute path of the source file to copy and destination directory. you can get the name of the file by calling File.getName() and FileUtils will create the same file in the destination directory with the same name.
import java.io.File;
import java.io.IOException;
import java.util.Date;
import org.apache.commons.io.FileUtils;
/** * Simple Java program to copy files from one directory to another directory. * Java IO API doesn't provide any direct way to copy files but you can copy files
* by copying its contents from InputStream to OutputStream. Though there are some
* better ways to do it like Using Apache Commons Utils library has FileUtils class
* to copy files in Java
*
* @author Javin
*/
public class FileCopyExample {
public static void main(String args[]) throws IOException {
//absolute path for source file to be copied
String source = "C:/sample.txt";
//directory where file will be copied
String target ="C:/Test/";
//name of source file
File sourceFile = new File(source);
String name = sourceFile.getName();
File targetFile = new File(target+name);
System.out.println("Copying file : " + sourceFile.getName() +" from Java Program");
//copy file from one location to other
FileUtils.copyFile(sourceFile, targetFile);
System.out.println("copying of file from Java program is completed");
}
}
Output:
Copying file : sample.txt from Java Program
copying of file from Java program is completed
That's all on how to copy files in Java. This simple Java program can be extended to copy all files from one directory to another directory by just providing the name of the source and directory and then the Java program will pick up each file and create another file with the same name in the target directory.
If you are going to do in plain Java its requires a lot of code and chances of error is high but if you use Apache Commons io library and FileUtils class it just matters of few line. As Joshua Bloch has rightly said in Effective Java, “prefer library over custom code”. Let me know if you find any bug on this Java File copy program.
Thank you for reading this Java File IO tutorial. If you have any doubt or questions then please ask in comments section. Happy to answer any doubt you may have.