Trong bài viết này mình sẽ đề cập đến cách sao chép một tập tin bất kỳ trong Java.
Nếu xem xét phiên bản Java 6 hoặc cũ hơn thì Java không có một đối tượng hoặc phương thức nào hỗ trợ cho chúng ta sao chép một tập tin cả, chỉ tạo hoặc xóa một tập tin thì có.
Do đó nếu các bạn đang làm việc trong một dự án chỉ sử dụng Java 6 thì hãy tham khảo đoạn code sau nếu có nhu cầu sao chép một tập tin nhé:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package com.huongdanjava.javaexample; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class Example { public static void main(String[] args) throws IOException { InputStream is = null; OutputStream os = null; try { is = new FileInputStream("F:/source.txt"); os = new FileOutputStream("E:/destination.txt"); byte[] buffer = new byte[1024]; int length; while ((length = is.read(buffer)) > 0) { os.write(buffer, 0, length); } } finally { if (is != null) { is.close(); } if (os != null) { os.close(); } } } } |
Còn nếu mà các bạn đang làm việc với Java 7 thì việc sao chép một tập tin không cần phải cực khổ nữa, bởi vì đối tượng Files được giới thiệu trong Java 7 đã có thể giúp chúng ta làm điều này.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package com.huongdanjava.javaexample; import java.io.File; import java.io.IOException; import java.nio.file.Files; public class Example { public static void main(String[] args) throws IOException { File source = new File("F:/source.txt"); File dest = new File("E:/destination.txt"); Files.copy(source.toPath(), dest.toPath()); } } |
Ngoài ra, chúng ta còn một cách khác nữa đó chính là sử dụng đối tượng FileUtils trong thư viện Apache Commons IO. Đối tượng này có chứa nhiều phương thức static overload copyFile() giúp chúng ta có thể sao chép một tập tin dễ dàng. Dưới đây là một ví dụ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package com.huongdanjava.javaexample; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; public class Example { public static void main(String[] args) throws IOException { File source = new File("F:/source.txt"); File dest = new File("E:/destination.txt"); FileUtils.copyFile(source, dest); } } |