15 Stimmen

Ermitteln des verfügbaren freien Speicherplatzes für einen bestimmten Pfad unter Windows

Mögliches Duplikat:
Programmatische Ermittlung des verfügbaren Speicherplatzes aus UNC Path

Ich versuche, eine Funktion zu finden, die ich von C# aus aufrufen kann, um diese Informationen abzurufen. Dies ist, was ich bis jetzt versucht habe:

String folder = "z:\myfolder"; // It works
folder = "\\mycomputer\myfolder"; // It doesn't work

System.IO.DriveInfo drive = new System.IO.DriveInfo(folder);
System.IO.DriveInfo a = new System.IO.DriveInfo(drive.Name);
long HDPercentageUsed = 100 - (100 * a.AvailableFreeSpace / a.TotalSize);

Das funktioniert gut, aber nur, wenn ich einen Laufwerksbuchstaben angebe. Gibt es eine Möglichkeit, den freien Speicherplatz abzurufen, indem man einen ganzen Pfad angibt?

27voto

rekire Punkte 46212

Versuchen Sie, die Winapi-Funktion zu verwenden GetDiskFreeSpaceEx :

[DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetDiskFreeSpaceEx(string lpDirectoryName,
   out ulong lpFreeBytesAvailable,
   out ulong lpTotalNumberOfBytes,
   out ulong lpTotalNumberOfFreeBytes);

ulong FreeBytesAvailable;
ulong TotalNumberOfBytes;
ulong TotalNumberOfFreeBytes;

bool success = GetDiskFreeSpaceEx(@"\\mycomputer\myfolder",
                                  out FreeBytesAvailable,
                                  out TotalNumberOfBytes,
                                  out TotalNumberOfFreeBytes);
if(!success)
    throw new System.ComponentModel.Win32Exception();

Console.WriteLine("Free Bytes Available:      {0,15:D}", FreeBytesAvailable);
Console.WriteLine("Total Number Of Bytes:     {0,15:D}", TotalNumberOfBytes);
Console.WriteLine("Total Number Of FreeBytes: {0,15:D}", TotalNumberOfFreeBytes);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X