روش های زیادی برای این کار در جاوا وجود دارد. یکی از آنها استفاده از کتابخانه Apache Commons IO است. اما اگر بخواهیم از API های موجود در JDK استفاده کنیم، روش های زیر امکانپذیر است:
1- استفاده از NIO:
Path source = Paths.get("c:/temp/testoriginal.txt");
Path destination = Paths.get("c:/temp/testcopied.txt");
Files.copy(source, destination, StandardCopyOption.REPLACE_EXISTING);
2- استفاده از Channel ها:
File fileToCopy = new File("c:/temp/testoriginal.txt");
FileInputStream inputStream = new FileInputStream(fileToCopy);
FileChannel inChannel = inputStream.getChannel();
File newFile = new File("c:/temp/testcopied.txt");
FileOutputStream outputStream = new FileOutputStream(newFile);
FileChannel outChannel = outputStream.getChannel();
inChannel.transferTo(0, fileToCopy.length(), outChannel);
inputStream.close();
outputStream.close();
3- استفاده از Stream ها:
File fileToCopy = new File("c:/temp/testoriginal.txt");
FileInputStream input = new FileInputStream(fileToCopy);
File newFile = new File("c:/temp/testcopied.txt");
FileOutputStream output = new FileOutputStream(newFile);
byte[] buf = new byte[1024];
int bytesRead;
while ((bytesRead = input.read(buf)) > 0)
{
output.write(buf, 0, bytesRead);
}
input.close();
output.close();
در بین روش های فوق، استفاده از Channel ها بالاترین performance را دارد.