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.