যেহেতু আমার কাছে অন্য কিছু খুঁজে পাওয়া যায় নি তা সত্যিই স্বাভাবিক উপায়ে সমাধান করতে সহায়তা করে, তাই এখানে আরও একটি উত্তর।
মনে রাখবেন যে অনুরূপ প্রশ্নের কয়েকটি উত্তর Uri
প্রকারটি ব্যবহার করার চেষ্টা করে তবে এটি পিছনে স্ল্যাশের সাথে লড়াই করে tra
এই পৃষ্ঠায় আমার অন্য উত্তরটি অপারেশনগুলির জন্য কাজ করে যা ফাইল সিস্টেমকে কাজ করতে দেয়, তবে আমরা যদি এখনই সমাধানের পথটি দেখতে চাই (যেমন তুলনার কারণে), ফাইল সিস্টেমের মধ্য দিয়ে না গিয়ে, C:/Temp/..
এবং C:/
অন্যরকম বিবেচিত হবে। ফাইল সিস্টেমে না গিয়ে, সেভাবে নেভিগেট করা আমাদের একটি সাধারণীকরণ, সঠিকভাবে তুলনীয় পথ সরবরাহ করে না।
আমরা কি করতে পারি?
আমরা নিম্নলিখিত আবিষ্কারের উপর ভিত্তি করে তৈরি করব:
Path.GetDirectoryName(path + "/") ?? ""
হবে নির্ভরযোগ্যভাবে আমাদের ডিরেক্টরির পাথ দিতে একটি trailing স্ল্যাশ ছাড়া ।
- স্ল্যাশ যোগ করার পদ্ধতি (যেমন
string
, না যেমন char
) একটি বিবেচনা করবে null
পাথ একই যেমন একইরূপে ""
।
GetDirectoryName
সংযুক্ত স্ল্যাশকে ধন্যবাদ সর্বশেষ পথের উপাদানটি অস্বীকার করা থেকে বিরত থাকবে।
GetDirectoryName
স্ল্যাশ এবং নেভিগেশনাল ডটগুলি স্বাভাবিক করবে।
- এর মধ্যে যেকোন পিছনের স্ল্যাশ অপসারণ অন্তর্ভুক্ত রয়েছে।
- এর মধ্যে
..
নেভিগেট করে ভেঙে পড়া অন্তর্ভুক্ত ।
GetDirectoryName
null
খালি পথে ফিরে আসবে , যা আমরা একত্রিত করেছি ""
।
আমরা এটি কীভাবে ব্যবহার করব?
প্রথমে ইনপুট পাথটি স্বাভাবিক করুন :
dirPath = Path.GetDirectoryName(dirPath + "/") ?? "";
তারপরে, আমরা প্যারেন্ট ডিরেক্টরিটি পেতে পারি এবং আরও নেভিগেট করতে আমরা এই অপারেশনটিকে যেকোন বার পুনরাবৃত্তি করতে পারি:
path = Path.GetDirectoryName(path);
মনে রাখবেন যে আমরা কখনও ফাইল সিস্টেমটি স্পর্শ করি নি। পথটির কোনও অংশের অস্তিত্বের প্রয়োজন নেই, যেমনটি যদি আমরা ব্যবহার করতাম DirectoryInfo
।