string path = "C:/folder1/folder2/file.txt";
আমি কোন বস্তু বা পদ্ধতিগুলি ব্যবহার করতে পারি যা আমাকে ফলাফল দেয় folder2
?
string path = "C:/folder1/folder2/file.txt";
আমি কোন বস্তু বা পদ্ধতিগুলি ব্যবহার করতে পারি যা আমাকে ফলাফল দেয় folder2
?
উত্তর:
আমি সম্ভবত কিছু ব্যবহার করতে হবে:
string path = "C:/folder1/folder2/file.txt";
string lastFolderName = Path.GetFileName( Path.GetDirectoryName( path ) );
অভ্যন্তরীণ কলটি GetDirectoryName
পুরো পথটি ফিরিয়ে দেবে, যখন বাইরের কলটি GetFileName()
সর্বশেষ পাথের উপাদানটি ফিরে আসবে - যা ফোল্ডারের নাম হবে।
এই পদ্ধতির কাজটি আসলে পাথের অস্তিত্ব আছে কিনা। এই পদ্ধতির, প্রাথমিকভাবে কোনও ফাইলের নাম শেষ হওয়ার পথে নির্ভর করে। যদি পথটি কোনও ফাইলের নাম বা ফোল্ডারের নামে শেষ হয় কিনা - তবে এটির জন্য প্রথমে কোনও ফাইল / ফোল্ডার উপস্থিত রয়েছে কিনা তা দেখার জন্য আপনার আসল পাথটি পরীক্ষা করা প্রয়োজন। সেক্ষেত্রে ড্যান দিমিত্রুর উত্তর আরও উপযুক্ত হতে পারে।
সহজ এবং পরিষ্কার। শুধুমাত্র ব্যবহার System.IO.FileSystem
- একটি কবজ মত কাজ করে:
string path = "C:/folder1/folder2/file.txt";
string folder = new DirectoryInfo(path).Name;
file.txt
এবং নাfolder2
কোনও ফাইলের নাম পথে না থাকলে কোনও পাথের জন্য ডিরেক্টরি পেতে আমি এই কোড স্নিপেট ব্যবহার করেছি:
উদাহরণস্বরূপ "সি: \ tmp \ পরীক্ষা \ ভিজ্যুয়াল";
string dir = @"c:\tmp\test\visual";
Console.WriteLine(dir.Replace(Path.GetDirectoryName(dir) + Path.DirectorySeparatorChar, ""));
আউটপুট:
চাক্ষুষ
এটিও লক্ষ করা গুরুত্বপূর্ণ যে একটি লুপের ডিরেক্টরি নামগুলির তালিকা পাওয়ার সময় 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
নীচে কোড কেবল ফোল্ডারের নাম পেতে সহায়তা করে
সর্বজনীন পর্যবেক্ষণযোগ্য সংগ্রহের আইটেম = নতুন পর্যবেক্ষণযোগ্য সংগ্রহ (); চেষ্টা { স্ট্রিং [] ফোল্ডারপ্যাথস = ডিরেক্টরি.গেটডাইরেক্টরিজ (স্ট্যাম্প); items.Clear (); foreach (ফোল্ডারপথগুলিতে স্ট্রিং গুলি) { আইটেমস.এড করুন (নতুন গ্রিডআইটেমস {ফোল্ডারনাম = এস। সরান (0, s.LastIndexOf ('\\') + 1), ফোল্ডারপথ = এস}); } } ধরা (ব্যতিক্রম ক) { } পাবলিক বর্গ গ্রিডআইটেম { পাবলিক স্ট্রিং ফোল্ডারনেম-পাওয়া; সেট; } পাবলিক স্ট্রিং ফোল্ডারপথ {পেতে; সেট; } }
এটি কুৎসিত তবে বরাদ্দ এড়ানো:
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;
}