আমি একটি ডেটাবেস টেবিল ডিজাইন করছি যা আপলোডকৃত ফাইলগুলির ফাইলের নাম ধারণ করবে। উইন্ডোজ এক্সপি বা ভিস্তার দ্বারা ব্যবহৃত এনটিএফএস-এ ফাইলের সর্বোচ্চ দৈর্ঘ্য কত?
আমি একটি ডেটাবেস টেবিল ডিজাইন করছি যা আপলোডকৃত ফাইলগুলির ফাইলের নাম ধারণ করবে। উইন্ডোজ এক্সপি বা ভিস্তার দ্বারা ব্যবহৃত এনটিএফএস-এ ফাইলের সর্বোচ্চ দৈর্ঘ্য কত?
উত্তর:
কোনও ফাইলনামের পৃথক উপাদানগুলি (অর্থাত্ পথের প্রত্যেকটি উপ-ডিরেক্টরি এবং চূড়ান্ত ফাইলের নাম) 255 টি অক্ষরের মধ্যে সীমাবদ্ধ এবং মোট পাথের দৈর্ঘ্য প্রায় 32,000 অক্ষরের মধ্যে সীমাবদ্ধ।
যাইহোক, উইন্ডোজে, আপনি MAX_PATH
মান (ফাইলের জন্য 259 টি অক্ষর, ফোল্ডারগুলির জন্য 248) অতিক্রম করতে পারবেন না । দেখাসম্পূর্ণ বিশদের জন্য http://msdn.microsoft.com/en-us/library/aa365247.aspx ।
এটি 257 টি অক্ষর। সুনির্দিষ্টভাবে বলতে গেলে: এনটিএফএস নিজেই কয়েক হাজার অক্ষরের সর্বাধিক ফাইল-দৈর্ঘ্য (প্রায় 30'000 কিছু) চাপিয়ে দেয়। যাইহোক, উইন্ডোজ পথ + ফাইলের নামের জন্য একটি 260 সর্বোচ্চ দৈর্ঘ্য আরোপ করে। ড্রাইভ + ফোল্ডারে কমপক্ষে 3 টি অক্ষর লাগে, তাই আপনার 257 শেষ হয়।
একটি দীর্ঘ ফাইলের নাম সহ কোনও ফাইল সংরক্ষণের চেষ্টা করার সময় ফ্রেমওয়ার্ক 4.5 এ "হ্যান্ডহেলড ব্যতিক্রম" এটি বলে:
নির্দিষ্ট পথ, ফাইলের নাম বা উভয়ই খুব দীর্ঘ। সম্পূর্ণরূপে যোগ্যতাসম্পন্ন ফাইলের নামটি অবশ্যই 260 টির চেয়ে কম বর্ণের হতে হবে এবং ডিরেক্টরিটির নামটি 248 টির চেয়ে কম বর্ণের হতে হবে ।
উইন্ডোজ এক্সপি এনটিএফএসে 199, আমি সবেমাত্র যাচাই করেছি।
এটি তত্ত্ব নয়, কেবল আমার ল্যাপটপে চেষ্টা করে। প্রশমিতকরণ প্রভাব থাকতে পারে, তবে এটি শারীরিকভাবে এটি আরও বড় করতে দেয় না let
আমি কি অবাক করে কিছু অন্য সেটিংস এই সীমিত? নিজের জন্য চেষ্টা করুন।
w
, সেটি মুছে ফেলেছি এবং উইন্ডোজ 7 x64 এ একই নামের একটি ফোল্ডার তৈরি করেছি। এখন প্রশ্নটি এখানে সীমাবদ্ধ ফ্যাক্টরটি কী: এনটিএফএস সংস্করণ, ওএস বা সাবসিস্টেম বা এক্সপিতে উইন 32 এপিআই?
এমএসডিএন অনুসারে , এটি 260 টি অক্ষর। এতে অন্তর্ভুক্ত রয়েছে "<NUL>"
- অদৃশ্য অবসান হওয়া নাল চরিত্র, তাই আসল দৈর্ঘ্য 259।
তবে নিবন্ধটি পড়ুন, এটি কিছুটা জটিল।
\\?\
রান অ্যাসেসটি নির্দিষ্ট উপায়ে কিছু অনির্দিষ্ট দৈর্ঘ্যে প্রসারিত করে সেই সীমাটি হ্রাস করা হয় । এই প্রসারণের পরে পাথ অবশ্যই 32767 বাইটের নিচে থাকতে হবে।
এনটিএফএসের দৈর্ঘ্য 255 NameLength
the এনটিএফএসের $Filename
বৈশিষ্ট্যটিতে ক্ষেত্রটি কোনও অফসেট ছাড়াই একটি বাইট; এটি 0-255 এর পরিসর দেয়।
ফাইলের নামটি আলাদা আলাদা "নেমস্পেসে" থাকতে পারে। এখনও অবধি রয়েছে: পসিক্স, উইন 32, ডস এবং (উইন 32 ডস - যখন কোনও ফাইলের নাম স্থানীয়ভাবে ডস নাম হতে পারে)। (যেহেতু স্ট্রিংটির দৈর্ঘ্য রয়েছে তাই এতে \ 0 থাকতে পারে তবে এটি সমস্যার সমাধান করতে পারে এবং উপরের নেমস্পেসে নেই))
সুতরাং একটি ফাইল বা ডিরেক্টরি নাম 255 অক্ষর পর্যন্ত হতে পারে। যখন উইন্ডোজ অধীনে সম্পূর্ণ পাথ উল্লেখ, আপনার প্রয়োজন সঙ্গে পথ উপসর্গ \\ \ (অথবা ব্যবহার \\ \ ইউএনসি ইউএনসি পাথ জন্য \ সার্ভার \ ভাগ) একটি বর্ধিত দৈর্ঘ্যের এক হিসাবে এই পথ চিহ্নিত করতে (~ 32k অক্ষর) । যদি আপনার পথটি দীর্ঘ হয় তবে আপনাকে আপনার কার্যনির্বাহী ডিরেক্টরিটি সেট করতে হবে (প্রক্রিয়া-বিস্তৃত সেটিংয়ের কারণে উগ - পার্শ্ব প্রতিক্রিয়া)।
255 টি অক্ষর।
আমি এটি উপরের অনুমোদিত উত্তরে যুক্ত করছি।
পরিষ্কার হওয়ার জন্য, লোকেরা এটি 255-260 টি অক্ষর বলে বিশ্বাস করার কারণ এটিই উইন্ডোজ এক্সপ্লোরার সমর্থন করে। এটির চেয়ে বেশি সময় ফাইলের নেমে ফাইল কপির মতো কিছু করার ক্ষেত্রে এটি ত্রুটি ঘটবে। যাইহোক, একটি প্রোগ্রাম অনেক দীর্ঘ ফাইলের নামগুলি পড়তে এবং লিখতে পারে (এটি কীভাবে আপনি এক্সপ্লোরার প্রথম স্থানে অভিযোগ করে এমন দৈর্ঘ্যে পৌঁছে যান)। এই জাতীয় পরিস্থিতিতে মাইক্রোসফ্টের "প্রস্তাবিত ফিক্স" হ'ল মূল প্রোগ্রামটিতে ফাইলটি খোলার এবং এর নাম পরিবর্তন করা।
নতুন উইন্ডোজ এসডিকে ডকুমেন্টেশন (8.0) অনুযায়ী মনে হচ্ছে একটি নতুন পথ সীমা সরবরাহ করা হয়েছে। পাথ হ্যান্ডলিং ফাংশনগুলির একটি নতুন সেট রয়েছে এবং নীচের মতো PATHCCH_MAX_CCH এর একটি সংজ্ঞা রয়েছে:
// max # of characters we support using the "\\?\" syntax
// (0x7FFF + 1 for NULL terminator)
#define PATHCCH_MAX_CCH 0x8000
অফিসিয়াল ডকুমেন্টেশনের এই অংশটি পরিষ্কারভাবে জানিয়েছে যে এটি এনটিএফএস, এক্সফ্যাট এবং এফএটি 32 এর জন্য 255 ইউনিকোড অক্ষর , এবং ইউডিএফের 127 ইউনিকোড বা 254 এএসসিআইআই অক্ষর।
তা ছাড়া, প্রতিটি পাথের উপাদানটি 255 টির বেশি অক্ষরের সাথে সর্বাধিক পাথ নামের দৈর্ঘ্য সর্বদা 32,760 ইউনিকোড অক্ষর is
WCHAR
উপাদান। না, এটা না "ইউনিকোড অক্ষর" (!: কোড পয়েন্ট, অক্ষর ইত্যাদি ... আপনার ইউনিকোড পরিভাষা পরীক্ষা)।
255 অক্ষর, যদিও সম্পূর্ণ পাথটি তার চেয়ে দীর্ঘ হওয়া উচিত নয়। উইকিপিডিয়ায় এটি সম্পর্কে একটি দুর্দান্ত টেবিল রয়েছে: http://en.wikedia.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
w
)। এখন কি?
আসলে এটি 256, ফাইল সিস্টেমের কার্যকারিতা তুলনা, সীমাগুলি দেখুন ।
Http://fixunix.com / মাইক্রোসফ্ট- উইন্ডোজ / 30758-windows-xp-file-name-leight-limit.html এ একটি পোস্ট পুনরাবৃত্তি করতে
"ধরে নিই আমরা এনটিএফএসের কথা বলছি এবং ফ্যাট 32 নয়," পথ + ফাইলের 255 অক্ষর "এক্সপ্লোরারের একটি সীমাবদ্ধতা, ফাইল সিস্টেম নিজেই নয় N
এক্সপ্লোরার-এবং উইন্ডোজ এপিআই- আপনাকে পাথের জন্য ২0০ টি অক্ষর সীমাবদ্ধ করে, যার মধ্যে ড্রাইভ লেটার, কোলন, পৃথক পৃথক স্ল্যাশ এবং একটি সমাপ্ত নাল চরিত্র অন্তর্ভুক্ত রয়েছে। আপনি যদি একটি
\\
" দিয়ে শুরু করেন তবে উইন্ডোজের দীর্ঘ পথটি পড়া সম্ভব হবে "
আপনি যদি উপরের পোস্টগুলি পড়েন তবে আপনি দেখতে পাবেন যে এখানে একটি 5 তম জিনিস রয়েছে যা আপনি নিশ্চিত হতে পারেন: কমপক্ষে একজন বাধা কম্পিউটার ব্যবহারকারীকে সন্ধান করা!
আমি ডাব্লুএস 2012 এক্সপ্লোরারে 224 টির চেয়ে বেশি অক্ষরের বেশি + পিরিয়ড + এক্সনেসন নাম দিয়ে কোনও ফাইল তৈরি করতে পারি না । মেসেঞ্জারে গুলি করবেন না!
একই সার্ভারের সিএমডিতে আমি 235 টিরও বেশি অক্ষরের নাম তৈরি করতে পারি না :
সিস্টেম নির্দিষ্ট পথ খুঁজে পাচ্ছি না.
এক্সপ্লোরারটিতে তৈরি হওয়া 224 টি অক্ষরের নামযুক্ত ফাইলটি নোটপ্যাড ++ এ খোলা যাবে না - পরিবর্তে এটি নতুন ফাইল নিয়ে আসে।
The system cannot find the path specified.
যেমন হয় না The specified path, file name, or both are too long.
। আমার ধারণা আপনার টাইপ বা কিছু ছিল আপনি যদি অস্তিত্বহীন পথে এমন কোনও ফাইল তৈরি করার চেষ্টা করেন বা অস্তিত্বহীন কোনও দিকে যেতে চান তবে আপনি সেই বার্তাটি পাবেন।