Để sao chép file trong java Có một số cách để sao chép file.3 cách sẽ được hiển thị ở đây:
Loạt bài hướng dẫn về JAVA IO :
1.Sử dụng InputStream và OutputStream
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class BasicFileCopier { public static void main(String[] args) { // Source file. File source = new File("C:/dev/file.txt"); // Destination file. File destination = new File("C:/dev/files/file.txt"); try { copyFile(source, destination); } catch (IOException e) { System.out.println("Problem occurs while copying files"); e.printStackTrace(); } } public static void copyFile(File source, File destination) throws IOException { // Using try with resources (No need to close files). try (InputStream inputStream = new FileInputStream(source); OutputStream outputStream = new FileOutputStream(destination);) { // Max length per line = 1024. byte[] buffer = new byte[1024]; int lineLength; while ((lineLength = inputStream.read(buffer)) > 0) { outputStream.write(buffer, 0, lineLength); } } } }
2.Sử dụng FileChannel
Bạn có thể sử dụng các phương thức transferFrom hoặc transfertTo của lớp FileChannel để sao chép. Dưới đây là cách làm:
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.nio.channels.FileChannel; public class FileChannelCopier { public static void main(String[] args) { // Source file. File source = new File("C:/dev/file.txt"); // Destination file. File destination = new File("C:/dev/files/file.txt"); try { copyFile(source, destination); } catch (IOException e) { System.out.println("Problem occurs when copying files"); e.printStackTrace(); } } public static void copyFile(File source, File destination) throws IOException { try (FileInputStream inputStream = new FileInputStream(source); FileOutputStream outputStream = new FileOutputStream(destination);){ FileChannel sourceChannel = inputStream.getChannel(); FileChannel destinationChannel = outputStream.getChannel(); destinationChannel.transferFrom(sourceChannel, 0, sourceChannel.size()); } } }
3.Sử dụng java.nio.file.Files
Kể từ Java 1.7, lớp tĩnh java.nio.file.Files được đưa ra để hoạt động trên các tập tin và thư mục.Dưới đây là cách sử dụng:
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; public class FilesCopier { public static void main(String[] args) { // Source file. Path source = Paths.get("C:/dev/file.txt"); // Destination file. Path destination = Paths.get("C:/dev/files/file.txt"); try { copyFile(source, destination); } catch (IOException e) { System.out.println("Problem occurs when copying files"); e.printStackTrace(); } } public static void copyFile(Path source, Path destination) throws IOException { Files.copy(source, destination, StandardCopyOption.REPLACE_EXISTING); } }