2011-07-08 26 views
12

gì là sự khác biệt giữaSự khác nhau giữa trong làm sao chép tập tin/xóa và di chuyển

  1. Sao chép một tập tin và xóa nó bằng cách sử File.Copy()File.Delete()
  2. Di chuyển các tập tin sử dụng File.Move()

Về sự cho phép cần thiết để thực hiện các hoạt động này là có sự khác biệt nào không? Bất kỳ giúp đỡ nhiều đánh giá cao.

Trả lời

8

Phương thức File.Move có thể được sử dụng để di chuyển tệp từ đường dẫn này sang đường dẫn khác. Phương thức này hoạt động trên ổ đĩa, và nó không ném một ngoại lệ nếu nguồn và đích giống nhau.

Bạn không thể sử dụng phương thức Di chuyển để ghi đè tệp hiện có. Nếu bạn cố gắng thay thế một tệp bằng cách di chuyển một tệp có cùng tên vào thư mục đó, bạn sẽ nhận được một IOException. Để khắc phục điều này, bạn có thể sử dụng sự kết hợp của sao chép và xóa các phương pháp

+0

OK, cảm ơn. Điểm tốt. Nhưng tôi muốn biết sự cho phép cần thiết để thực hiện các thao tác này. Nói sao chép tôi cần quyền 'Đọc' và để xóa tôi cần quyền 'Sửa đổi' trên tệp ..etc? Để di chuyển ??? – Lamps

+0

di chuyển là kết hợp sao chép và xóa vì vậy nếu bạn có quyền cho cả hai thao tác này, bạn không cần phải có thêm quyền để di chuyển –

+0

OK Cảm ơn. Tôi đạt được rồi. Tôi nghĩ rằng đối với thao tác xóa và di chuyển, chúng tôi cần có quyền Sửa đổi trên tệp. – Lamps

0

Tôi không nghĩ có bất kỳ sự khác biệt cho phép khôn ngoan, nhưng cá nhân tôi muốn sử dụng File.Move() kể từ đó bạn có cả hành động xảy ra trong cùng một "giao dịch". Nói cách khác nếu một cái gì đó di chuyển thất bại toàn bộ hoạt động không thành công. Tuy nhiên, nếu bạn chia nhỏ nó thành hai bước (sao chép + xóa) nếu bản sao làm việc và xóa không thành công, bạn sẽ phải đảo ngược "giao dịch" (xóa bản sao) theo cách thủ công.

0

Giấy phép trong chuyển tệp được chọn tại hai điểm: nguồn và đích. Vì vậy, nếu bạn không có quyền số đọc quyền truy cập trong thư mục nguồn hoặc bạn không có quyền số ghi ở đích, thì cả hai phương thức này đều ném ngoại lệ AccessDeniedException. Nói cách khác, việc kiểm tra giấy phép là bất khả tri đối với phương pháp được sử dụng.

3

Hiệu suất khôn ngoan, nếu trên cùng và hệ thống tệp, di chuyển tệp là (theo điều kiện đơn giản) một cái gì đó.

Hãy tưởng tượng bạn có 180MiB để di chuyển và bạn có thể ghi lên đĩa của mình ở khoảng 30MiB/s. Sau đó, với sao chép/xóa, mất khoảng 6 giây để hoàn thành. Với một động thái đơn giản [cùng một hệ thống tập tin], nó chạy quá nhanh đến mức bạn thậm chí không thể nhận ra nó.

(Tôi đã từng viết một số người trợ giúp hệ thống tệp giao dịch sẽ di chuyển hoặc sao chép nhiều tệp, tất cả hoặc không có gì; để thực hiện cam kết nhanh nhất có thể, trước tiên tôi đã chuyển/sao chép tất cả nội dung vào thư mục con tạm thời và sau đó cam kết cuối cùng sẽ chuyển dữ liệu tồn tại vào một thư mục khác (để kích hoạt tính năng rollback) và dữ liệu mới đến đích).

Các vấn đề liên quan