2011-11-10 52 views
16

Nếu File.SetAttributes("C:\\myFile.txt", FileAttributes.ReadOnly); đặt một tệp là chỉ đọc, làm cách nào để đặt lại thành đọc/ghi nếu tôi cần?C# làm cho tập tin đọc/ghi từ chỉ đọc

Tôi cho rằng nó sẽ là FileAttributes.Normal tuy nhiên điều này có thay đổi bất kỳ thuộc tính nào khác của tệp không? Không có ghi chú mô tả khủng khiếp trên trang web MSDN ...

Tệp này bình thường và không có thuộc tính nào khác được đặt. Thuộc tính này là chỉ hợp lệ nếu được sử dụng một mình.

Cảm ơn

Trả lời

36

Để loại bỏ chỉ thuộc tính ReadOnly, bạn muốn làm điều gì đó như thế này:

File.SetAttributes("C:\\myfile.txt", File.GetAttributes("C:\\myfile.txt") & ~FileAttributes.ReadOnly); 

này sẽ loại bỏ các thuộc tính ReadOnly, nhưng duy trì bất kỳ thuộc tính khác mà đã tồn tại trên tập tin.

+0

Tôi đoán '~' đảo ngược thuộc tính? –

+2

Khá nhiều - toán tử '~' trả về một phần bổ sung bitwise của một giá trị đã cho. Về mặt ngữ nghĩa, những gì nói trên là, "Đặt thuộc tính của tệp' myfile.txt' thành thuộc tính 'myfile.txt' * ngoại trừ thuộc tính ReadOnly *." – matt

+0

ok rực rỡ! :) thanks –

8

Tệp.SetAttributes thay thế TẤT CẢ thuộc tính trên tệp.

Cách thích hợp để đặt và xóa thuộc tính là trước tiên lấy thuộc tính, áp dụng thay đổi và đặt chúng.

ví dụ:

var attr = File.GetAttributes(path); 

// set read-only 
attr = attr | FileAttributes.ReadOnly; 
File.SetAttributes(attr); 

// unset read-only 
attr = attr & ~FileAttributes.ReadOnly; 
File.SetAttributes(attr); 
Các vấn đề liên quan