2010-02-23 13 views
32

से रीडोनली विशेषता हटाएं मैं प्रोग्रामिंग से सी # में निर्देशिका से रीडोनली विशेषता को कैसे हटा सकता हूं?निर्देशिका

+0

@Lalit आप क्या हासिल करने की कोशिश कर रहे हैं? –

+0

देखें कि मैंने अपने कुछ पथ पर केवल फ़ोल्डर पढ़ा है। मैं उस फ़ोल्डर में कुछ फाइलों की प्रतिलिपि बनाना चाहता हूं। ताकि अस्थायी बनाना इसे लिखने योग्य माध्यमों को पढ़ा जाए, तो फ़ाइलों को प्रतिलिपि बनाएँ, फिर फ़ाइलों को कॉपी करें और फिर उस फोल्डर को केवल पढ़ने के रूप में बनाएं। क्या आप मेरी मदद कर सकते हैं? यह आवश्यकता है। –

+0

विंडोज़ पर, निर्देशिका पर सेट की गई रीडोनली विशेषता वास्तव में बहुत अर्थहीन है। आप अभी भी उस निर्देशिका को हटा, नाम बदल सकते हैं। Https://support.microsoft.com/en-us/help/326549/you-cannot-view-or-change-the-read-only-or-the-system-attributes-of- फ़ोल्डर्स-in- विन्डोज़ देखें - सर्वर-2003, -in-windows-xp, -in-windows-vista-or-in-windows-7 अधिक जानकारी के लिए। –

उत्तर

73
var di = new DirectoryInfo("SomeFolder"); 
di.Attributes &= ~FileAttributes.ReadOnly; 
+3

हे डारिन चाहता हूं, इस वाक्यविन्यास का क्या अर्थ है? "और = ~" चीयर्स! – andy

+27

और = -> संलग्न करें अन्य सभी विशेषताओं को स्पर्श न करें और ~ -> पूरक पढ़ें पढ़ने के विपरीत – MarkKGreenway

5

यहाँ का उपयोग कर विशेषताओं C#

http://www.csharp-examples.net/file-attributes/

उनके उदाहरण के आधार पर, आप निकालना पढ़ें केवल इस तरह विशेषता कर सकते हैं (मैं इस परीक्षण नहीं किया) फ़ाइल को संशोधित करने के उदाहरण के लिए एक अच्छा लिंक है:

File.SetAttributes(filePath, File.GetAttributes(filePath) & ~FileAttributes.ReadOnly); 
+4

इस बारे में सब कुछ फाइल के बारे में आओ। वाना abt निर्देशिका .... कृपया। –

+1

@ रेड हंस: मैंने अभी छुपा गुण जोड़ने के लिए इसका परीक्षण किया है, और यह निर्देशिकाओं के साथ भी ठीक काम करता है। – Petrucio

+1

यह फ़ाइलों और निर्देशिकाओं के लिए काम करता है क्योंकि निर्देशिका निर्देशिका विशेषता सेट (FileAttributes.Directory) के साथ एक विशेष फ़ाइल की तरह है। – seveves

2

यदि आप फ़ाइल सिस्टम में फ़ाइल की विशेषता को हटाने का प्रयास कर रहे हैं, तो System.IO.FileInfo क्लास का एक उदाहरण बनाएं और संपत्ति IsReadOnly को गलत पर सेट करें।

 FileInfo file = new FileInfo("c:\\microsoft.text"); 
     file.IsReadOnly = false; 
+0

फ़ाइल के बारे में नहीं। मैं निर्देशिका/फ़ोल्डर –

0

इसे अंत में मिला। 1) यह काम करता है ReadOnly विशेषता सेट कर दिया जाता है, इस प्रकार एक परीक्षण पहले से आवश्यक है तभी: -;)

class Program 
{ 
    static void Main(string[] args) 
    { 
     DirectoryInfo di = new DirectoryInfo("c:\\test"); 

     FileAttributes f = di.Attributes; 

     Console.WriteLine("Directory c:\\test has attributes:"); 
     DecipherAttributes(f); 

    } 

    public static void DecipherAttributes(FileAttributes f) 
    { 
     // To set use File.SetAttributes 

     File.SetAttributes(@"C:\test", FileAttributes.ReadOnly); 

     if ((f & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) 
      Console.WriteLine("ReadOnly"); 

     // To remove readonly use "-=" 
     f -= FileAttributes.ReadOnly; 

     if ((f & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) 
      Console.WriteLine("ReadOnly"); 
     else 
      Console.WriteLine("Not ReadOnly"); 
    } 
} 
3

का प्रयोग = असाइनमेंट ऑपरेटर दो कारणों के लिए खतरनाक है। 2) यह एक घटाव संचालन कर रहा है, जो बाइनरी झंडे के साथ काम करते समय सबसे अच्छा विकल्प नहीं है। घटाव ऑपरेशन काम करता है यदि स्थिति 1 (उपरोक्त) सत्य है, लेकिन अतिरिक्त घटाना संचालन फ़ाइल एट्रिब्यूट फ़ील्ड में अन्य बिट्स को भी लागू करेगा!

"& = ~ FileAttributes.ReadOnly;" का उपयोग करें केवल पढ़ने के लिए ध्वज रीसेट करने के लिए।

"| = FileAttributes.ReadOnly;" का उपयोग करें केवल पढ़ने के लिए ध्वज सेट करने के लिए। FileAttributes.Normal को

0

गुण स्थापित दोनों फ़ोल्डरों और फ़ाइलों पर मेरे लिए काम किया।

+0

इस दृष्टिकोण के साथ मेरी एकमात्र चिंता यह है कि फ़ोल्डर (या फ़ाइल) में कोई अन्य विशेषता है या नहीं? यदि कोई फ़ोल्डर छुपा हुआ है और केवल पढ़ा गया है, और आप इसे केवल पढ़ने के लिए नहीं चाहते हैं, तो आपकी विधि इसे अब भी छिपी नहीं जाएगी। उसमें अनपेक्षित परिणाम हो सकते हैं। –

0
public static void DeleteDirectory(string path) 
    { 
     var directory = new DirectoryInfo(path) 
     { Attributes =FileAttributes.Normal }; 
     foreach (var info in directory.GetFileSystemInfos("*", SearchOption.AllDirectories)) 
     { 
      info.Attributes = FileAttributes.Normal; 
     } 
     directory.Delete(true); 
    } 
संबंधित मुद्दे