Question

Quelqu'un sait comment (en natif) obtenir la taille de fichier autorisée max pour un lecteur donné / dossier / répertoire? Comme dans FAT16 est ~ 2gb, Fat32 il était 4gb aussi loin que je me souvienne et pour les versions les plus récentes NTFS, il est bien quelque chose au-delà .. et encore moins Mono et les systèmes d'exploitation sous-jacents.

Est-ce que je peux lire / récupérer qui pourrait me donner un indice à ce sujet? Fondamentalement, je peux -know- app produira plus gros, des fichiers individuels que 2gb et je veux vérifier que lorsque l'utilisateur définit le chemin de sortie correspondant (s) ...

Vive et merci, -J

Était-ce utile?

La solution

Cela peut ne pas être la solution idéale, mais je vous suggère ce qui suit quand même:

// 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

Cette page sur Wikipédia contient une liste assez complète des tailles de fichier maximum pour divers systèmes de fichiers. En fonction du nombre de systèmes de fichiers pour lequel vous voulez vérifier dans la fonction GetMaximumFileSize, vous pouvez utiliser un objet Dictionary ou même un simple fichier de données plutôt que d'une instruction switch.

Maintenant, vous peut être récupérer la taille maximale du fichier directement à l'aide WMI ou peut-être même l'API Windows, mais ces solutions d'être uniquement compatible cours avec Windows (pas de chance avec Mono / Linux) . Cependant, je considère cette solution purement géré raisonnablement agréable, malgré l'utilisation d'une table de consultation, et a l'avantage de travailler de manière fiable sur tous les systèmes d'exploitation.

L'espoir qui aide.

Autres conseils

Comment l'utilisation de System.Info.DriveInfo.DriveFormat pour récupérer le système de fichiers du lecteur (NTFS, FAT, ect.)? Cela devrait vous donner au moins une idée des tailles de fichiers pris en charge.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top