Was, wenn DirectoryInfo.GetFiles (). Length Int32.MaxValue überschreitet?

8

Durch eine weitere Frage über die maximale Anzahl von Dateien in einer Mappe, bemerkte ich das

%Vor%

gibt ein System.In32 zurück, aber der Maximalwert eines Int32 ist

%Vor%

Während auf NTFS (vielen anderen Dateisystemen) die maximale Anzahl von Dateien weit darüber hinausgehen kann.

auf NTFS ist es

%Vor%

Was mich zu der interessanten Frage führt:

Ist es möglich, die Anzahl der Dateien in einem Ordner auf NTFS mit dem .NET-Framework zu erhalten, wenn die Anzahl der Dateien den Int32.MaxValue auf elegante und leistungsstarke Weise überschreitet?

Hinweis: Dies ist keine Frage des Warum. und ich weiß, das sind viele Dateien;)

    
Caspar Kleijne 22.09.2010, 12:14
quelle

1 Antwort

6

Es gibt eine Eigenschaft LongLength für Array , die die Länge als long zurückgibt. Wie auch immer, wenn GetFiles mehr als Int32.MaxValue liefert, wirst du trotzdem Probleme haben ... wie zB OutOfMemoryException ;)

Wenn Sie die Anzahl der Elemente nicht wirklich benötigen, sollten Sie stattdessen die Methode EnumerateFiles verwenden (in 4.0 eingeführt). Es ruft nicht alle Dateinamen auf einmal ab, sondern ruft sie nacheinander ab

    
Thomas Levesque 22.09.2010, 12:24
quelle

Tags und Links