Java: Sao chép tập tin hoặc thư mục

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Ta có thể sao chép một tập tin hoặc thư mục bằng cách sử dụng phương thức copy(Path, Path, CopyOption ...). Bản sao sẽ lỗi nếu các tập tin đích tồn tại, trừ khi tùy chọn REPLACE_EXISTING được chỉ định.

Thư mục cũng có thể được sao chép. Tuy nhiên, tập tin bên trong thư mục sẽ không được sao chép kèm theo, vì vậy thư mục mới được tạo ra sẽ trống mặc dù thư mục gốc chứa các tập tin.

Khi sao chép một liên kết tượng trưng, ​​đích của liên kết cũng được sao chép. Nếu ta muốn sao chép chính liên kết đó và không phải là nội dung của liên kết thì ta chỉ định tùy chọn NOFOLLOW_LINKS hoặc REPLACE_EXISTING.

Phương thức copy() này có một đối số varargs. Kiểu liệt kê StandardCopyOption và LinkOption được hỗ trợ:

  • REPLACE_EXISTING - Thực hiện các bản sao ngay cả khi các tập tin đích đã tồn tại. Nếu đích là một liên kết tượng trưng thì ​​bản thân liên kết sẽ được sao chép (chứ không phải là đích của liên kết). Nếu đích là một thư mục rỗng thì các bản sao sẽ gặp lỗi do ngoại lệ FileAlreadyExistsException.
  • COPY_ATTRIBUTES - Các bản sao của các thuộc tính tập tin có liên quan đến các tập tin đích. Các thuộc tính tập tin được hỗ trợ là hệ thống tập tin và nền tảng phụ thuộc, nhưng last-modified-time được hỗ trợ trên các nền tảng và được sao chép vào tập tin đích.
  • NOFOLLOW_LINKS - Chỉ ra rằng các liên kết tượng trưng không nên được nối tiếp. Nếu tập tin được sao chép là một liên kết tượng trưng thì liên kết sẽ được sao chép (chứ không phải là đích của liên kết).

Nếu bạn chưa hiểu rõ về kiểu liệt kê, xin xem thêm tại Kiểu liệt kê.

Đoạn mã sau đây trình bày cách sử dụng phương thức copy():

import static java.nio.file.StandardCopyOption.*;
...
Files.copy(source, target, REPLACE_EXISTING);
 

Ngoài sao chép tập tin, lớp Files còn định nghĩa những phương thức mà có thể được sử dụng để sao chép giữa một tập tin và một stream. Phương thức copy(InputStream, Path, CopyOptions...) có thể được sử dụng để sao chép tất cả các byte từ input stream vào tập tin. Phương thức copy(Path, OutputStream) có thể được sử dụng để sao chép tất cả các byte từ một tập tin tới một output stream.

Các ví dụ về lớp Copy sử dụng các phương thức copy() và Files.walkFileTree để hỗ trợ một bản copy đệ quy. Xem Walking the file tree để biết thêm thông tin.

» Tiếp: Di chuyển tập tin hoặc thư mục
« Trước: Xóa tập tin hoặc thư mục
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!