পুরো ফাইল পাথ থেকে ফোল্ডারের নাম পান


116

অ্যাপ্লিকেশনটির পুরো পথ থেকে আমি কীভাবে ফোল্ডারের নাম পাব?

এটি নীচের ফাইল পাথ,

c:\projects\root\wsdlproj\devlop\beta2\text

এখানে "পাঠ্য" হ'ল ফোল্ডারের নাম।

আমি কীভাবে এই ফোল্ডারটির নামটি পাব?

উত্তর:


205

ডিরেক্টরীআইএনফো.নাম দেখুন :

string dirName = new DirectoryInfo(@"c:\projects\roott\wsdlproj\devlop\beta2\text").Name;

এর জন্য কি ফোল্ডারটি ফাইল সিস্টেমে আসলে বিদ্যমান নেই (ফোল্ডারটির নামটি এখনও সেই পুরো ফাইল পাথের জন্য "পাঠ্য" হবে যদি ফোল্ডার "সি: \ প্রজেক্টস \ রুট \ wsdlproj \ devlop \ beta2 \ টেক্সট" না থাকে ( বর্তমানে) ফাইল সিস্টেমে বিদ্যমান?
পিটার মর্টেনসেন

@ পিটারমোরটেনসেন, না। আমি কেবল এটি পরীক্ষা করেছি এবং ফোল্ডারের পথটি উপস্থিত না থাকলেও পদ্ধতিটি স্ট্রিং থেকে নিম্নতম স্তরের ফোল্ডারের নাম দেয়।
vbguyny

1
ধন্যবাদ, দুর্দান্ত উত্তর। তবে আমি কিছুটা বিস্মিত হয়েছি যে সিস্টেম.আইও.ডাইরেক্টরি এই জাতীয় ক্রিয়াকলাপ সমর্থন করে না।
আনহপ্পে

1
@ অ্যানহপ্প - আমি সম্মত আরেকটি বিকল্প দেখলাম Path.GetDirectoryName হয় msdn.microsoft.com/en-us/library/... - কিন্তু না আগামীকাল পর্যন্ত এটি পরীক্ষা করার সক্ষম হবে।
ডন চ্যাডল

30

আমি মনে করি আপনি ফাইলের পথ থেকে পিতামাতার ফোল্ডারের নাম পেতে চান। এটি পেতে সহজ। একটি উপায় হ'ল একটি FileInfoধরণের অবজেক্ট তৈরি করা এবং এর Directoryসম্পত্তিটি ব্যবহার করা ।

উদাহরণ:

FileInfo fInfo = new FileInfo("c:\projects\roott\wsdlproj\devlop\beta2\text\abc.txt");

String dirName = fInfo.Directory.Name;

16

এটা চেষ্টা কর

var myFolderName = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
var result = Path.GetFileName(myFolderName);

আপনার যদি স্ট্রিংয়ে কোনও ফাইলের নাম থাকে তবে এটি ফাইলের
নামটিও

1
এই ক্ষেত্রে, পাঠ্যটি হ'ল (এক্সটেনশন-কম) ফাইলের নাম। আমি ভেবেছিলাম ওপি পরে কি ছিল। যদি এটি কোনও ফোল্ডার বা কোনও ফাইলের নামটি আসলে কিছু যায় আসে না। যদি স্ট্রিংটিতে ফাইলের নাম না থাকে তবে এই কোডটি তাকে তার পরে দেবে।
vyvind ব্রাথিন

4
পাথগুলি শেষ না হলে with এর মতো:@"c:\projects\roott\wsdlproj\devlop\beta2\text\"
ক্রিস্টফ ক্লেস

1
এটি কোনও ফোল্ডারের জন্য কাজ করে না। আমি একটি ফাঁকা স্ট্রিং পাই অবশ্যই একটি ফাইল উপস্থিত থাকতে হবে
ব্রেভনিউমথ

3
এটি ঠিকঠাক কাজ করে যদি ফোল্ডারে পাথটিতে একটি পিছনের ব্যাকস্ল্যাশ না থাকে (যেমন উদাহরণস্বরূপ কোনও ফোল্ডার পাথ পথ থেকে ফিরে আসে etGetDirectoryName () )। যদিও ফাংশনটির নাম, গেটফিলনাম (), কিছুটা বিভ্রান্তিকর।
পিটার মর্টেনসেন

9

আপনি এটি ব্যবহার করতে পারেন:

string path = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
string lastDirectory = path.Split(new char[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();

পথটি যদি দেখতে দেখতে কেমন হয়: @ "সি: \ প্রকল্পগুলি \ রট \ ডাব্লুএসডলপ্রোজ ro ডেভলপ \ বিটা 2 \ পাঠ্য \", সুতরাং অতিরিক্ত ডিরেক্টরিসাপারেটরচরের সাথে
অ্যালেক্স পাকুরার

1
@ অ্যালেক্স - আমি এ জাতীয় ধরণের পাথের সাথে এটি কাজ করার জন্য আমার কোডটি সংশোধন করেছি। StringSplitOptions.RemoveEmptyEntriesকৌতুক করে
ক্রিস্টফ ক্লেস

মতে msdn.microsoft.com/en-us/library/... প্রয়োজনে অনুমতি দেওয়া হয় FileInfo একটি ব্যতিক্রম নিক্ষেপ করতে পারেন।
ড্যানিয়েল বি

5

সহজভাবে ব্যবহার Path.GetFileName

এখানে - ফোল্ডারের পুরো পথ থেকে ফোল্ডারের নামটি বের করুন:

string folderName = Path.GetFileName(@"c:\projects\root\wsdlproj\devlop\beta2\text");//Return "text"

এখানে কিছু অতিরিক্ত দেওয়া হয়েছে - কোনও ফাইলের পুরো পথ থেকে ফোল্ডারের নাম তোলা:

string folderName = Path.GetFileName(Path.GetDirectoryName(@"c:\projects\root\wsdlproj\devlop\beta2\text\GTA.exe"));//Return "text"

3

আমি অনুভব করেছি যে টেক্সট.টিএসটিএসটি কোনও ডিরেক্টরি বা কেবল একটি ফাইল, তা আবিষ্কার করার জন্য ফাইল সিস্টেমে যাওয়া ছাড়া উপায় নেই। আপনি যদি কিছু সাধারণ চান, তবে আপনি কেবল ব্যবহার করতে পারেন:

s.Substring(s.LastIndexOf(@"\"));

1
স্ট্রিংয়ের সামনের অংশে স্ল্যাশ এড়াতে: s.Substring (s.LastIndexOf (@ "" \ ") + 1);
ডেভিড ইয়েটস

2

এক্ষেত্রে আপনি যে ফাইলটি পেতে চান সেটি স্ট্রপথ ভেরিয়েবলে সংরক্ষণ করা হয়:

string strPath = Server.MapPath(Request.ApplicationPath) + "/contents/member/" + strFileName;

2

এখানে একটি বিকল্প পদ্ধতি যা ডিরেক্টরীআইএনফো অবজেক্ট তৈরি না করেই আমার পক্ষে কাজ করেছিল। মূল বিষয়টি হ'ল সেই পথে GetFileName()কাজ করা হয় যখন পথে কোনও পিছনে স্ল্যাশ না থাকে।

var name = Path.GetFileName(path.TrimEnd(Path.DirectorySeparatorChar));

উদাহরণ:

var list = Directory.EnumerateDirectories(path, "*")
        .Select(p => new
        {
            id = "id_" + p.GetHashCode().ToString("x"),
            text = Path.GetFileName(p.TrimEnd(Path.DirectorySeparatorChar)),
            icon = "fa fa-folder",
            children = true
        })
        .Distinct()
        .OrderBy(p => p.text);

1

এটিও এর মতো করা যেতে পারে;

var directoryName = System.IO.Path.GetFileName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");

এটি একটি খালি স্ট্রিংটি ফিরিয়ে দেবে
ডিস্ক্লোজার

@ ডিস্ক্লোসার - স্রেফ স্ক্রিপ্টসি দ্বারা পরীক্ষা করা হয়েছে এবং এটি 'পাঠ্য' ফেরত দেয়
স্টিভ কুপার

2
এটি ঠিকঠাক কাজ করে যদি ফোল্ডার পাথটিতে একটি পিছনের ব্যাকস্ল্যাশ না থাকে (যেমন উদাহরণস্বরূপ কোনও ফোল্ডার পাথ পথ থেকে ফিরে আসে etGetDirectoryName () )। যদিও ফাংশনটির নাম, গেটফিলনাম (), কিছুটা বিভ্রান্তিকর।
পিটার মর্টেনসেন 14

0

পূর্ববর্তী উত্তরের ভিত্তিতে (তবে স্থির)

using static System.IO.Path;

var dir = GetFileName(path?.TrimEnd(DirectorySeparatorChar, AltDirectorySeparatorChar));

.NET উত্সGetFileName থেকে ব্যাখ্যা :

প্রদত্ত পথের নাম এবং এক্সটেনশন অংশগুলি ফেরত দেয়। ফলস্বরূপ স্ট্রিংয়ে এমন পাথের অক্ষর রয়েছে যা শেষ ব্যাকস্ল্যাশ ("\"), স্ল্যাশ ("/"), বা পথে কোলন (":") অক্ষর অনুসরণ করে। ফলস্বরূপ স্ট্র্যাশ, স্ল্যাশ, বা কোলন অক্ষর অপসারণের পরে যদি কোনও ব্যাকস্ল্যাশ না থাকে তবে ফলাফলটি স্ট্রিংটি পুরো পথ is পথটি শূন্য হলে ফলাফলটি স্ট্রিং নাল।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.