কোনও পথ থেকে ফোল্ডারের নাম পাওয়া


186
string path = "C:/folder1/folder2/file.txt";

আমি কোন বস্তু বা পদ্ধতিগুলি ব্যবহার করতে পারি যা আমাকে ফলাফল দেয় folder2?


5
আপনি কি সর্বশেষ ফোল্ডারের নাম চান তাই আপনার যদি সি: \ ফোল্ডার 1 \ ফোল্ডার 2 \ ফোল্ডার 3 \ file.txt থাকে তবে আপনি "ফোল্ডার 3" চান?
স্টিভ ড্যানার

উত্তর:


334

আমি সম্ভবত কিছু ব্যবহার করতে হবে:

string path = "C:/folder1/folder2/file.txt";
string lastFolderName = Path.GetFileName( Path.GetDirectoryName( path ) );

অভ্যন্তরীণ কলটি GetDirectoryNameপুরো পথটি ফিরিয়ে দেবে, যখন বাইরের কলটি GetFileName()সর্বশেষ পাথের উপাদানটি ফিরে আসবে - যা ফোল্ডারের নাম হবে।

এই পদ্ধতির কাজটি আসলে পাথের অস্তিত্ব আছে কিনা। এই পদ্ধতির, প্রাথমিকভাবে কোনও ফাইলের নাম শেষ হওয়ার পথে নির্ভর করে। যদি পথটি কোনও ফাইলের নাম বা ফোল্ডারের নামে শেষ হয় কিনা - তবে এটির জন্য প্রথমে কোনও ফাইল / ফোল্ডার উপস্থিত রয়েছে কিনা তা দেখার জন্য আপনার আসল পাথটি পরীক্ষা করা প্রয়োজন। সেক্ষেত্রে ড্যান দিমিত্রুর উত্তর আরও উপযুক্ত হতে পারে।


133
আরেকটি সমাধান: নতুন ডিরেক্টরি ইন্ফো (পূর্ণপথ) ফেরান ame নাম;
ডেভিড ইকার্দি

1
ডেভিড ইকার্দি থেকে সমাধান আমার পক্ষে আরও ভাল কাজ করেছে কারণ আমার আপেক্ষিক পথ ছিল। ধন্যবাদ।
আকাতরণ

4
@ ডেভিড আইকার্ডি আপনার মন্তব্যটি সত্যই একটি উত্তর হওয়া উচিত, এটি মূল্যবান।
ওন্দ্রেজ জানাসেক

3
যখন পথটি কোনও ফাইল (ডিরেক্টরিতে একটি পাথ) অন্তর্ভুক্ত না করে এটি কাজ করে না, যখন @ ডেভিড আইকার্ডি সমাধানটি করে।
বয়স

6
সতর্কতা: এই সমাধানটি ভুল! "সি: / বিন / লগস" এর জন্য এটি "বিন" প্রদান করে। রিটার্ন নতুন ডিরেক্টরি ইন্ফো (ফুলপথ) ব্যবহার করুন নাম; পরিবর্তে.
জিবিগিনিউ ওয়াইড্রো

36

এটা চেষ্টা কর:

string filename = @"C:/folder1/folder2/file.txt";
string FolderName = new DirectoryInfo(System.IO.Path.GetDirectoryName(filename)).Name;

23

সহজ এবং পরিষ্কার। শুধুমাত্র ব্যবহার System.IO.FileSystem- একটি কবজ মত কাজ করে:

string path = "C:/folder1/folder2/file.txt";
string folder = new DirectoryInfo(path).Name;

3
এই ক্ষেত্রে ফোল্ডারটি হবে file.txtএবং নাfolder2
টিজে রকফেলার

13

ডিরেক্টরীআইএনফো ডিরেক্টরিটির নাম মুছে ফেলার কাজটি করে

string my_path = @"C:\Windows\System32";
DirectoryInfo dir_info = new DirectoryInfo(my_path);
string directory = dir_info.Name;  // System32

7

কোনও ফাইলের নাম পথে না থাকলে কোনও পাথের জন্য ডিরেক্টরি পেতে আমি এই কোড স্নিপেট ব্যবহার করেছি:

উদাহরণস্বরূপ "সি: \ tmp \ পরীক্ষা \ ভিজ্যুয়াল";

string dir = @"c:\tmp\test\visual";
Console.WriteLine(dir.Replace(Path.GetDirectoryName(dir) + Path.DirectorySeparatorChar, ""));

আউটপুট:

চাক্ষুষ


আপনি কেবল পথটি করতে পারেন FGETFileName (dir) এবং এটি ফোল্ডারের নামটি ঠিকঠাক ফিরবে।
jrich523

3
var fullPath = @"C:\folder1\folder2\file.txt";
var lastDirectory = Path.GetDirectoryName(fullPath).Split('\\').LastOrDefault();

2

এটিও লক্ষ করা গুরুত্বপূর্ণ যে একটি লুপের ডিরেক্টরি নামগুলির তালিকা পাওয়ার সময় DirectoryInfo ক্লাসটি একবার প্রথম দিকে একবার কেবল প্রথমবারের কলকে অনুমতি দেয় initial এই সীমাবদ্ধতাটিকে বাইপাস করার জন্য, কোনও পৃথক ডিরেক্টরির নাম সংরক্ষণ করতে আপনার লুপের মধ্যে ভেরিয়েবলগুলি ব্যবহার নিশ্চিত করুন।

উদাহরণস্বরূপ, স্ট্রিং প্রকারের তালিকার অভ্যন্তরে পাওয়া প্রতিটি ডিরেক্টরি-নাম যুক্ত করার সময় এই নমুনা কোডটি কোনও পিতামাতার ডিরেক্টরিগুলির মধ্যে ডিরেক্টরিগুলির তালিকার মধ্য দিয়ে লুপ করে:

[সি #]

string[] parentDirectory = Directory.GetDirectories("/yourpath");
List<string> directories = new List<string>();

foreach (var directory in parentDirectory)
{
    // Notice I've created a DirectoryInfo variable.
    DirectoryInfo dirInfo = new DirectoryInfo(directory);

    // And likewise a name variable for storing the name.
    // If this is not added, only the first directory will
    // be captured in the loop; the rest won't.
    string name = dirInfo.Name;

    // Finally we add the directory name to our defined List.
    directories.Add(name);
}

[VB.NET]

Dim parentDirectory() As String = Directory.GetDirectories("/yourpath")
Dim directories As New List(Of String)()

For Each directory In parentDirectory

    ' Notice I've created a DirectoryInfo variable.
    Dim dirInfo As New DirectoryInfo(directory)

    ' And likewise a name variable for storing the name.
    ' If this is not added, only the first directory will
    ' be captured in the loop; the rest won't.
    Dim name As String = dirInfo.Name

    ' Finally we add the directory name to our defined List.
    directories.Add(name)

Next directory

1

নীচে কোড কেবল ফোল্ডারের নাম পেতে সহায়তা করে

 সর্বজনীন পর্যবেক্ষণযোগ্য সংগ্রহের আইটেম = নতুন পর্যবেক্ষণযোগ্য সংগ্রহ ();

   চেষ্টা
            {
                স্ট্রিং [] ফোল্ডারপ্যাথস = ডিরেক্টরি.গেটডাইরেক্টরিজ (স্ট্যাম্প);
                items.Clear ();
                foreach (ফোল্ডারপথগুলিতে স্ট্রিং গুলি)
                {
                    আইটেমস.এড করুন (নতুন গ্রিডআইটেমস {ফোল্ডারনাম = এস। সরান (0, s.LastIndexOf ('\\') + 1), ফোল্ডারপথ = এস});

                }

            }
            ধরা (ব্যতিক্রম ক)
            {

            }
  পাবলিক বর্গ গ্রিডআইটেম
    {
        পাবলিক স্ট্রিং ফোল্ডারনেম-পাওয়া; সেট; }
        পাবলিক স্ট্রিং ফোল্ডারপথ {পেতে; সেট; }
    }

0

এটি কুৎসিত তবে বরাদ্দ এড়ানো:

private static string GetFolderName(string path)
{
    var end = -1;
    for (var i = path.Length; --i >= 0;)
    {
        var ch = path[i];
        if (ch == System.IO.Path.DirectorySeparatorChar ||
            ch == System.IO.Path.AltDirectorySeparatorChar ||
            ch == System.IO.Path.VolumeSeparatorChar)
        {
            if (end > 0)
            {
                return path.Substring(i + 1, end - i - 1);
            }

            end = i;
        }
    }

    if (end > 0)
    {
        return path.Substring(0, end);
    }

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