Natürlich musst du System.IO Namensraum einführen
Der erste:
öffentliche statische lange GetDirectoryLength(string dirPath)
{ Bestimmen Sie, ob ein gegebener Pfad existiert, und verlassen, wenn nicht, wenn (! Directory.Exists(dirPath)) 0 zurückzugeben; long len = 0;
//定义一个DirectoryInfo对象 DirectoryInfo di = neues DirectoryInfo(dirPath);
Verwenden Sie die GetFiles-Methode, um die Größe aller Dateien im di-Verzeichnis zu erhalten foreach (FileInfo fi in di.GetFiles())
{ len += fi. Länge;
}
Hol alle Ordner im DI und speichere sie in einem neuen Array von Objekten zur Rekursion DirectoryInfo[] dis = di.GetDirectories(); wenn (dis. Länge > 0)
{ für (int i = 0; Ich < das. Länge; i++)
{ len += GetDirectoryLength(dis. FullName);
}
} Zurück, Len;
}
Der zweite
Es verwendet auch die Idee der Rekursion, wird jedoch anhand der Exits-Methode der Dateiklasse beurteilt.
//所给路径中所对应的是否为文件
öffentliche statische lange Dateigröße (String-Dateipfad)
{ Long Temp = 0;
//判断当前路径所指向的是否为文件 wenn (File.Exists(filePath) == falsch)
{ string[] str1 = Directory.GetFileSystemEntries(filePath); Foreach (Saite S1 in STR1)
{ temp += Dateigröße(s1);
}
} oder
{
Definiere ein FileInfo-Objekt, um es mit der Dateirichtung zu verknüpfen, auf die filePath zeigt,
//以获取其大小 FileInfo fileInfo = neue FileInfo(filePath); return fileInfo.Length;
} Rückkehrtemperatur;
}
Tatsächlich ist die Idee, einen Ordner zu löschen, dieselbe wie hier, die Einstellung ist viel einfacher, man muss einfach beurteilen, ob es eine Datei oder ein Ordner ist, wenn es eine Datei ist, löschen Sie sie. Wenn es ein Ordner ist, ist er rekursiv |