1. Chế độ ghi đè (overwrite)
Khi sử dụng File.copy như dưới đây (chế độ không overwrite) mình nghĩ nếu trong thư mục C:\Temp\Data\ đã có file Test.txt thì hệ thống sẽ bỏ qua ko copy nữa.
Nhưng thực tế trong C# khi file đã tồn tại hệ thống sẽ throw file already exist exception
1 2 3 4 |
//Chế độ không ghi đè string sourceFile = @"C:\Temp\Test.txt"; string destinationFile = @"C:\Temp\Data\Test.txt"; File.Copy(sourceFile, destinationFile) |
Nếu dùng chế độ overwrite như dưới đây thì hệ thống sẽ ghi đè nên file đã tồn tại mà không throw exception
1 2 3 4 |
//CHế độ ghi đè string sourceFile = @"C:\Temp\Test.txt"; string destinationFile = @"C:\Temp\Data\Test.txt"; File.Copy(sourceFile, destinationFile, true) |
2. Trường hợp file đang bị sử dụng
Khi dùng File.copy ở chế độ không ghi đè thì dù file Test.txt trong thư mục C:\Temp\Data\ có đang được 1 chương trình khác mở hay không hệ thống vẫn sẽ throw exception
Tuy nhiên với chế độ ghi đè thì ngược lại cho dù file Test.txt có đang được 1 chương trình khác sử dụng thì vẫn không có exceptioin cho dù việc copy không thành công (do file đang được chương trình khác sử dụng)
3. Kết luận
Như đã trình bày ở trên cả 2 cách copy đều có ưu nhược điểm riêng.
Với chế độ không ghi đè chúng ta phải xử lý exception khi file đích đã tồn tại.
Còn với chế độ ghi đè chúng ta cần kiểm tra file đích có đang tồn tại và đang bị sử dụng bởi chương trình khác hay không.