سؤال

أقوم بتصميم جدول قاعدة بيانات يحتوي على أسماء الملفات التي تم تحميلها.ما هو الحد الأقصى لطول اسم الملف في NTFS كما يستخدمه نظام التشغيل Windows XP أو Vista؟

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

المحلول

وتقتصر المكونات الفردية من اسم ملف (أي كل دليل فرعي على طول الطريق، واسم الملف النهائي) إلى 255 حرفا، ويبلغ طول مسار يقتصر على ما يقرب من 32،000 حرفا.

ولكن، على ويندوز، يمكنك ألا تتجاوز قيمة MAX_PATH (259 حرفا لملفات، 248 للمجلدات). انظر <لأ href = "http://msdn.microsoft.com /en-us/library/aa365247.aspx "يختلط =" noreferrer "> http://msdn.microsoft.com/en-us/library/aa365247.aspx للحصول على التفاصيل الكاملة.

نصائح أخرى

وانها 257 حرفا. لأكون دقيقا: NTFS نفسه لا فرض الحد الأقصى اسم الملف طول من عدة آلاف من الأحرف (حوالي 30'000 شيء). ومع ذلك، يفرض ويندوز طول 260 كحد أقصى لمسار + اسم الملف. محرك + المجلد يستغرق 3 أحرف على الأقل، حتى ينتهي بك الأمر مع 257.

هذا ما يقوله "الاستثناء غير المعالج" في الإطار 4.5 عند محاولة حفظ ملف باسم ملف طويل:

المسار المحدد أو اسم الملف أو كليهما طويل جدًا.يجب أن يكون اسم الملف المؤهل بالكامل أقل من 260 الأحرف، ويجب أن يكون اسم الدليل أقل من 248 الشخصيات.

screenshot

199 على نظام التشغيل Windows XP NTFS، راجعت فقط.

وهذه ليست نظرية وإنما من مجرد محاولة على جهاز الكمبيوتر المحمول. قد يكون هناك تخفيف الآثار، ولكن سيكون جسديا لن تسمح لي أن أكبر.

هل هناك مكان آخر يحد من هذا، وأنا أتساءل؟ انها محاولة لنفسك.

ووفقا ل MSDN ، انها 260 حرفا. ويشمل "<NUL>" -The غير مرئية تنتهي حرف خالية، وبالتالي فإن طول الفعلي هو 259.

ولكن قراءة المقال، انها قليلا أكثر تعقيدا.

الطول في NTFS هو 255.ال NameLength الحقل في NTFS $Filename السمة هي بايت بدون إزاحة؛هذا ينتج نطاق من 0-255.

يمكن أن يكون اسم الملف نفسه في "مساحات أسماء" مختلفة.حتى الآن هناك:POSIX وWIN32 وDOS و(WIN32DOS - عندما يكون اسم الملف اسم DOS في الأصل).(نظرًا لأن السلسلة لها طول، فهي استطاع تحتوي على \0 ولكن ذلك قد يؤدي إلى مشاكل وهو غير موجود في مساحات الأسماء أعلاه.)

وبالتالي يمكن أن يصل اسم الملف أو الدليل إلى 255 حرفًا.عند تحديد المسار الكامل ضمن Windows، تحتاج إلى ذلك بادئة المسار ب \\?\ (أو استخدم \\?\UNC\server\share لمسارات UNC) لوضع علامة على هذا المسار كمسار ممتد (حوالي 32 ألف حرف).إذا كان مسارك أطول، فسيتعين عليك تعيين دليل العمل الخاص بك على طول الطريق (آثار جانبية بسبب الإعداد على مستوى العملية).

وانا إضافة هذا إلى الإجابة المعتمدة أعلاه.

وأن تكون واضحة، والسبب الناس يعتقدون أن تكون 255-260 حرفا لأن هذا هو كل ما يدعم ويندوز إكسبلورر. وسوف خطأ من فعل شيء من هذا القبيل نسخة الملف على أسماء أطول من ذلك. ومع ذلك، يمكن للبرنامج قراءة وكتابة أسماء أطول بكثير (والذي هو كيف تحصل على أطوال أن مستكشف يشكو في المقام الأول). "الإصلاح موصى بها" مايكروسوفت في مثل هذه الحالات هو فتح الملف في البرنامج الأصلي الذي كتب عليه، وتسميته.

واستنادا إلى وثائق ويندوز SDK الجديدة (8.0) يبدو أن يتم توفير الحد مسار جديد. هناك مجموعة جديدة من التعامل مع وظائف وتعريف PATHCCH_MAX_CCH مثل يلي:

// max # of characters we support using the "\\?\" syntax
// (0x7FFF + 1 for NULL terminator)
#define PATHCCH_MAX_CCH             0x8000

هذا الجزء من الوثائق الرسمية يقول بوضوح أنه كذلك 255 حرف يونيكود لـ NTFS وexFAT وFAT32 و127 Unicode أو 254 حرف ASCII لـ UDF.

وبصرف النظر عن ذلك، فإن الحد الأقصى لطول اسم المسار هو دائمًا 32,760 حرفًا Unicode، مع ألا يزيد كل مكون مسار عن 255 حرفًا.

255 حرف، على الرغم من أن المسار الكامل يجب أن لا يكون أطول من ذلك أيضا. هناك جدول لطيفة في أكثر من ويكيبيديا حول هذا: http://en.wikipedia.org/wiki/Filename .

238!لقد قمت بفحصه ضمن Win7 32 بت باستخدام البرنامج النصي الخفافيش التالي:

set "fname="
for /l %%i in (1, 1, 27) do @call :setname
@echo %fname%
for /l %%i in (1, 1, 100) do @call :check
goto :EOF
:setname
set "fname=%fname%_123456789"
goto :EOF
:check
set "fname=%fname:~0,-1%"
@echo xx>%fname%
if not exist %fname% goto :eof
dir /b
pause
goto :EOF

والواقع هو 256، انظر <م> <وأ href = "http://msdn.microsoft.com/en-us/library/ee681827(VS.85).aspx#limits" يختلط = "نوفولو noreferrer" > ملف نظام وظائف المقارنة، يحد .

لتكرار آخر على HTTP: //fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.html

<اقتباس فقرة>   

"على افتراض أننا نتحدث عن NTFS وليس FAT32، و" 255 حرفا   لمسار + ملف "وجود قيود على مستكشف، وليس الملفات نفسها.   NTFS يدعم مسارات تصل إلى 32،000 أحرف Unicode طويلة، مع كل   العنصر يصل إلى 255 حرفا.

     -و

مستكشف ويندوز API- حدود لك 260 حرفا لل   مسار، والتي تشمل حرف محرك الأقراص، القولون، مائلة فصل و   إنهاء حرف خالية. فمن الممكن لقراءة مسار أطول في   ويندوز إذا كنت تشغيله مع \\ "

إذا كنت تقرأ الوظائف المذكورة أعلاه سترى هناك شيء 5TH يمكنك أن تكون على يقين من: العثور على واحدة على الأقل مستخدم الكمبيوتر العنيد!

لا يمكنني إنشاء ملف بالاسم + الفترة + الامتداد في WS 2012 Explorer لفترة أطول من 224 الشخصيات.لا تطلق النار على الرسول!

في CMD لنفس الخادم لا يمكنني إنشاء ملف أطول من 235 اسم الشخصية:

لا يمكن للنظام العثور على المسار المحدد.

لا يمكن فتح الملف الذي يحتوي على اسم مكون من 224 حرفًا في Explorer في Notepad++ - فهو يأتي بملف جديد بدلاً من ذلك.

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