2011-11-10 9 views
16

तो File.SetAttributes("C:\\myFile.txt", FileAttributes.ReadOnly); एक फ़ाइल सेट से लिखने के रूप में केवल पढ़ने के लिए, मैं कैसे इसे वापस सेट अगर मैं करने की जरूरत है/लिखने पढ़ने के लिए करते हैं?सी # फ़ाइल को पढ़ने बनाते हैं/केवल पढ़ने के लिए

मुझे लगता है यह होगा FileAttributes.Normal लेकिन इस फ़ाइल के किसी भी अन्य संपत्तियों बदल जाएगा? एमएसडीएन साइट पर एक बहुत ही वर्णनात्मक नोट नहीं है ...

फ़ाइल सामान्य है और इसमें कोई अन्य विशेषता सेट नहीं है। यह विशेषता केवल तभी वैध है जब अकेले उपयोग की जाती है।

धन्यवाद

उत्तर

36

सिर्फ ReadOnly विशेषता निकालने के लिए, अगर आप इस तरह कुछ करना चाहते हैं:

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

यह ReadOnly विशेषता निकल जाएगी, लेकिन किसी अन्य विशेषताओं है कि पहले से ही पर मौजूद हैं की रक्षा फ़ाइल।

+0

मैं अनुमान लगा रहा हूं कि '' 'विशेषता को उलट देता है? –

+2

बहुत अधिक - '~' ऑपरेटर किसी दिए गए मान का थोड़ा सा पूरक देता है। अर्थात्, उपरोक्त कहता है कि, "readfnly विशेषता * को छोड़कर 'myfile.txt' * के गुणों में फ़ाइल' myfile.txt' के गुण सेट करें।" – matt

+0

ठीक शानदार! :) धन्यवाद –

8

फ़ाइल.SetAttributes फ़ाइल पर सभी विशेषताओं को प्रतिस्थापित करता है।

स्थापित गुण और दूर करने के लिए उचित तरीके से पहले, गुण प्राप्त परिवर्तनों को लागू है, और उन्हें स्थापित करने के लिए है।

उदा

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);