Frage

Wer weiß, wie man (nativ) erhält die maximale zulässige Dateigröße für ein bestimmtes Laufwerk / Ordner / Verzeichnis? Wie in für Fat16 ist es ~ 2gb, Fat32 es war 4gb soweit ich mich erinnern und für die neueren NTFS-Versionen ist es etwas weit darüber hinaus .. allein Mono und den zugrunde liegenden OSes lassen.

Gibt es etwas, ich auslesen kann / abrufen, die geben könnte mir einen Hinweis auf das? Grundsätzlich -know- ich kann produzieren app größer, einzelne Dateien als 2 GB und ich möchte für das überprüfen, wenn der Benutzer den entsprechenden Ausgangspfad setzt (s) ...

Prost & Dank, -J

War es hilfreich?

Lösung

Das ist vielleicht nicht die ideale Lösung sein, aber ich werde die folgende sowieso vorschlagen:

// Returns the maximum file size in bytes on the filesystem type of the specified drive.
long GetMaximumFileSize(string drive)
{
    var driveInfo = new System.IO.DriveInfo(drive)

    switch(driveInfo.DriveFormat)
    {
        case "FAT16":
            return 1000; // replace with actual limit
        case "FAT32":
            return 1000; // replace with actual limit
        case "NTFS":
            return 1000; // replace with actual limit
    }
}

// Examples:
var maxFileSize1 = GetMaximumFileSize("C"); // for the C drive
var maxFileSize2 = GetMaximumFileSize(absolutePath.Substring(0, 1)); // for whichever drive the given absolute path refers to

Diese Seite auf Wikipedia enthält eine ziemlich umfassende Liste der maximalen Dateigrößen für verschiedene Dateisysteme. Je nach Anzahl der Dateisysteme, für die Sie in der GetMaximumFileSize Funktion überprüfen möchten, können Sie ein Dictionary-Objekt verwenden mögen, oder sogar eine einfache Datendatei anstatt einer switch-Anweisung.

Nun, Sie können die maximale Dateigröße direkt WMI abrufen verwenden oder vielleicht sogar die Windows-API, aber diese Lösungen werden natürlich nur unter Windows (dh kein Glück mit Mono / Linux) kompatibel sein . Allerdings würde ich eine einigermaßen nett rein verwaltete Lösung bedenken Sie, trotz der Verwendung einer Lookup-Tabelle und hat den Bonus von Arbeits zuverlässig auf allen Betriebssystemen.

Ich hoffe, das hilft.

Andere Tipps

Wie wäre es System.Info.DriveInfo.DriveFormat Verwendung des Laufwerks-Dateisystem (NTFS, FAT, ect.) Abrufen? Das sollte man zumindest eine Vorstellung von den unterstützten Dateigrößen geben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top