كيفية الحصول على السماح ماكس حجم الملف في صافي؟

StackOverflow https://stackoverflow.com/questions/668380

  •  21-08-2019
  •  | 
  •  

سؤال

لا أحد يعرف كيفية (أصلا) للحصول على الحد الأقصى المسموح به لحجم ملف معين حملة / مجلد / الدليل؟ كما هو الحال في لFAT16 هو ~ 2GB، FAT32 كان 4GB بقدر ما أتذكر وللإصدارات NTFS أحدث هو الطريق شيء أبعد من ذلك .. ناهيك عن مونو وانظمة التشغيل الأساسية.

هل هناك أي شيء يمكنني تلا / استرداد التي قد تعطيني تلميحا على ذلك؟ أساسا أنا -know- قد app وسوف تنتج أكبر، صورة واحدة من 2GB وأريد للتحقق من أنه عندما يحدد المستخدم مسار الإخراج المقابلة (ق) ...

وهتاف وشكرا، -J

هل كانت مفيدة؟

المحلول

وهذا قد لا يكون الحل الأمثل، ولكنني لن أقترح ما يلي على أي حال:

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

هذه الصفحة على ويكيبيديا تحتوي على قائمة شاملة جدا من أحجام الملفات القصوى لل مختلف أنظمة الملفات. اعتمادا على عدد من أنظمة الملفات التي تريد أن تحقق وظيفة GetMaximumFileSize، قد ترغب في استخدام كائن القاموس أو حتى ملف بيانات بسيط بدلا من بيان التبديل.

والآن، أنت <م> قد يتم استرداد الحد الأقصى لحجم الملف مباشرة باستخدام WMI أو ربما حتى API ويندوز، ولكن هذه الحلول بالطبع يكون فقط متوافق مع ويندوز (أي لا حظ مع مونو / لينكس) . ومع ذلك، أود أن تنظر هذه لطيفة معقولة حل تمكنت بحتة، على الرغم من استخدام طاولة البحث، ولها مكافأة العمل بشكل موثوق على كافة أنظمة التشغيل.

وعلى أمل أن يساعد.

نصائح أخرى

وماذا عن استخدام System.Info.DriveInfo.DriveFormat لاسترداد نظام الملفات في محرك الأقراص (NTFS، FAT، إلخ.)؟ الذي يجب أن تعطيك ما لا يقل عن فكرة من أحجام الملفات المعتمدة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top