2009-03-20 8 views
2

Est-ce que quelqu'un sait comment obtenir (nativement) la taille de fichier maximale autorisée pour un lecteur/dossier/répertoire donné? Comme dans Fat16 il est ~ 2gb, Fat32 il était 4gb autant que je me souvienne et pour les versions NTFS plus récentes, il est quelque chose de bien au-delà .. et encore moins Mono et les systèmes d'exploitation sous-jacents.Comment obtenir la taille de fichier maximale autorisée dans .Net?

Y a-t-il quelque chose que je peux lire/extraire qui pourrait me donner un indice là-dessus? 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 & merci, -J

Répondre

1

Cela peut ne pas être la solution idéale, mais je vais laisser croire que de toute façon:

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

This sur Wikipédia contient une liste assez complète des tailles de fichier maximum pour les différents systèmes de fichiers. En fonction du nombre de systèmes de fichiers pour lesquels vous souhaitez vérifier la fonction GetMaximumFileSize, vous pouvez utiliser un objet Dictionary ou même un simple fichier de données plutôt qu'une instruction switch. Maintenant, vous pouvez récupérer la taille maximale de fichier directement en utilisant WMI ou peut-être même l'API Windows, mais ces solutions seront bien sûr seulement compatibles avec Windows (c'est-à-dire sans chance avec Mono/Linux). Cependant, je considérerais cela comme une solution purement gérée, malgré l'utilisation d'une table de recherche, et j'ai le privilège de travailler de manière fiable sur tous les systèmes d'exploitation.

Espérons que ça aide.

1

Comment utiliser 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 de la taille des fichiers pris en charge.

Questions connexes