2010-07-09 13 views
10

मैं एक इंस्टॉलर प्रोजेक्ट पर काम कर रहा हूं जहां मुझे डिस्क पर फ़ाइलों को निकालने की आवश्यकता है। मैं सी # का उपयोग कर हार्ड डिस्क पर उपलब्ध डिस्क स्थान की गणना/खोज कैसे कर सकता हूं?मुफ्त डिस्क स्थान की गणना कैसे करें?

+2

आप सी # का उपयोग कर डिस्क स्थान की गणना नहीं कर सकते हैं। आपको .NET का उपयोग करना होगा। –

उत्तर

9

http://msdn.microsoft.com/en-us/library/system.io.driveinfo.totalfreespace.aspx

लिंक

से कॉपी किया गया
using System; 
using System.IO; 

class Test 
{ 
    public static void Main() 
    { 
     DriveInfo[] allDrives = DriveInfo.GetDrives(); 

     foreach (DriveInfo d in allDrives) 
     { 
      Console.WriteLine("Drive {0}", d.Name); 
      Console.WriteLine(" File type: {0}", d.DriveType); 
      if (d.IsReady == true) 
      { 
       Console.WriteLine(" Volume label: {0}", d.VolumeLabel); 
       Console.WriteLine(" File system: {0}", d.DriveFormat); 
       Console.WriteLine(
        " Available space to current user:{0, 15} bytes", 
        d.AvailableFreeSpace); 

       Console.WriteLine(
        " Total available space:   {0, 15} bytes", 
        d.TotalFreeSpace); 

       Console.WriteLine(
        " Total size of drive:   {0, 15} bytes ", 
        d.TotalSize); 
      } 
     } 
    } 
} 
1

क्या आपको परवाह करने की ज़रूरत है? बस फ़ाइलों को डिस्क पर लिखें और त्रुटियों को आवश्यकतानुसार संभाल लें - यह माना जाता है कि किसी भी स्थान से संबंधित कुछ होने पर आपको रोलबैक को किसी भी तरह लागू करना होगा, इसलिए बस "डिस्क डिस्क स्पेस" को केवल एक और त्रुटि के रूप में देखें, जिसकी आपको आवश्यकता है के लिए रोलबैक

अद्यतन: यदि आप यहां इस सही उत्तर को कम करने के लिए आ रहे हैं, तो कृपया एक टिप्पणी क्यों दें।

+0

बल्कि मैला दृष्टिकोण, क्या आपको नहीं लगता? समय से पहले ड्राइव स्पेस उपलब्ध करना एक मामूली मामला है, और यह प्रोग्राम स्थापित करते समय उपयोगकर्ता को बहुत परेशानी बचा सकता है। – jrista

+0

मैं मानता हूं कि आपको चेतावनी दी जानी चाहिए कि लेखन असंभव होगा लेकिन आपको प्रतिलिपि के दौरान अंतरिक्ष से बाहर चलने वाले ड्राइव को संभालने की आवश्यकता होगी। –

+2

मुझे नहीं लगता कि यह बिल्कुल मैला है, और जब कोई प्रोग्राम गलत अनुमान लगाता है तो यह बहुत खराब होता है - इस धागे पर दो जवाब हैं और अब तक, उनमें से कोई भी पूर्ण नहीं है। उल्लेख नहीं है, क्या होगा यदि आपको सिस्टम ड्राइव पर कुछ फ़ाइलों को इंस्टॉल करना है और कुछ ड्राइव के लिए उन्होंने पूछा है? आप उपयोगकर्ता को * * * कैसे समझाते हैं? –

9

System.IO.DriveInfo कक्षा का उपयोग करें। दो विकल्प उपलब्ध ... एक है कि खाते में डिस्क कोटा लेता हैं:

var drive = new DriveInfo("c"); 
long freeSpaceInBytes = drive.AvailableFreeSpace; 

और एक कि बस की कुल रिक्त स्थान प्रदान करता है:

var drive = new DriveInfo("c"); 
long freeSpaceInBytes = drive.TotalFreeSpace; 
2

आप WMI का भी उपयोग कर सकते हैं।

http://msdn.microsoft.com/en-us/library/windows/desktop/aa394173(v=vs.85).aspx

using System; 
using System.Management; 

class Test 
{ 
    static void Main() 
    { 
     var moCollection = new ManagementClass("Win32_LogicalDisk").GetInstances(); 

     foreach (var mo in moCollection) 
     { 
      if (mo["DeviceID"] != null && mo["DriveType"] != null && mo["Size"] != null && mo["FreeSpace"] != null) 
      { 
       // DriveType 3 = "Local Disk" 
       if (Convert.ToInt32(mo["DriveType"]) == 3) 
       { 
        Console.WriteLine("Drive {0}", mo["DeviceID"]); 
        Console.WriteLine("Size {0} bytes", mo["Size"]); 
        Console.WriteLine("Free {0} bytes", mo["FreeSpace"]); 
       } 
      } 
     } 
    } 
} 
संबंधित मुद्दे