সি # তে বর্তমান ডিরেক্টরি নাম (শেষ অংশ) পান


158

আমার বর্তমান ডিরেক্টরিটির শেষ অংশটি পাওয়া /Users/smcho/filegen_from_directory/AIRPassthroughদরকার, উদাহরণস্বরূপ , আমার পাওয়া দরকার AIRPassthrough

অজগর সহ, আমি এই কোডটি দিয়ে এটি পেতে পারি।

import os.path

path = "/Users/smcho/filegen_from_directory/AIRPassthrough"
print os.path.split(path)[-1]

অথবা

print os.path.basename(path)

আমি কীভাবে সি # দিয়ে একই জিনিস করতে পারি?

যোগ করা হয়েছে

উত্তরদাতাদের সহায়তা নিয়ে আমি আমার যা প্রয়োজন তা পেয়েছি।

using System.Linq;
string fullPath = Path.GetFullPath(fullPath).TrimEnd(Path.DirectorySeparatorChar);
string projectName  = fullPath.Split(Path.DirectorySeparatorChar).Last();

অথবা

string fullPath = Path.GetFullPath(fullPath).TrimEnd(Path.DirectorySeparatorChar);
string projectName = Path.GetFileName(fullPath);


1
অজগর, আপনি বরং করা উচিত os.path.basename(path)
রিনিস্যাক

উত্তর:


132

আপনি খুঁজছেন Path.GetFileName
মনে রাখবেন যে পথটি যদি একটিতে শেষ হয় তবে এটি কাজ করবে না \


3
@ এন্টি: ভুল; আমি এটা চেষ্টা করেছি. স্ট্রিং স্ট্রিং হয়। Path.GetFileName("/Users/smcho/filegen_from_directory/AIRPassthrough")আপনি যদি বিশ্বাস না করেন তবে লিনকপ্যাডে আটকান ।
এসএলএক্স

@ আনিসিটিটি না, এটি ডিরেক্টরিটির নাম ফিরিয়ে দেবে, তবে সম্ভবত প্রশ্নটি ঠিক কী ছিল তা নয়।
জাকব মলিস

@ জ্যাকব: শিরোনাম দেওয়া, আমি মনে করি এটিই প্রশ্নটি সম্পর্কে।
এসএলএক্স

3
@Light: এটা করে কাজ; এটি চেষ্টা করুন। Pathশ্রেণী উভয় বিভাজক পরিচালনা করে।
এসএলএক্স

31
ডিরেক্টরিটি দিয়ে ডিরেক্টরিটি পুনরুদ্ধার করে এই ডিরেক্টরিটি ব্যবহার করার জন্য To গেটডাইরেক্টরিগুলি ব্যবহার করুন: স্ট্রিং ডিরেক্টরীনেম = প্যাথ।গেটফিলনেম (ডিরেক্টরি.TrimEnd (Path.DirectorySeparatorChar));
ফ্যাটলাদ

184

আপনি চেষ্টা করতে পারেন:

var path = @"/Users/smcho/filegen_from_directory/AIRPassthrough/";
var dirName = new DirectoryInfo(path).Name;

20
আমি এটি নির্বাচিত উত্তরের চেয়ে ভাল পছন্দ করি। (আব) গেটফিলনাম ব্যবহার করা শব্দার্থগতভাবে ভুল কারণ এটি একটি ডিরেক্টরি যা আপনি পুনরুদ্ধার করার চেষ্টা করছেন। এছাড়াও, গেটফিলনামকে নির্বিচারে তৈরি করার অর্থ আপনার পিছনে পিছনে থাকা স্ল্যাশ বা ব্যাকস্ল্যাশ হওয়ার সম্ভাবনার জন্য অ্যাকাউন্ট করতে হবে এবং এটি ছাঁটাই করা হবে যা কুৎসিত।
সাইমন ব্রাংউইন

var dirName = new DirectoryInfo (Path.GetDirectoryName (pathWithFilename))। নাম // আরও ভাল
Kernowcode

@ কার্নোকোড আমি বিশ্বাস করি যে ওপি-র অনুরোধ অনুসারে '' এআইআরপাসস্ট্র্রু'-এর পরিবর্তে "ফাইলজেন_ফর্ম_ডাইরেক্টরি" ফিরে আসবে
কোডি বার্টফাস্ট

1
@ সিমনব্র্যাংউইন আমি ভেবেছিলাম যে সবকিছুই লিনাক্সের একটি ফাইল :)
রেজার

12

ঠিক আছে, আপনার প্রশ্নের শিরোনামের ঠিক উত্তর দিতে :-)

var lastPartOfCurrentDirectoryName = 
   Path.GetFileName(Environment.CurrentDirectory);

12

আপনার কাছে যা আছে তার উপর নির্ভর করে এটি কিছুটা আলাদা উত্তর। আপনার যদি ফাইলগুলির একটি তালিকা থাকে এবং ফাইলটি যে সর্বশেষ ডিরেক্টরিতে থাকে সেটির নাম পেতে হলে আপনি এটি করতে পারেন:

string path = "/attachments/1828_clientid/2938_parentid/somefiles.docx";
string result = new DirectoryInfo(path).Parent.Name;

এটি "2938_parentid" ফিরে আসবে


8

পরিবর্তে কলটি বিভক্ত হওয়ার জন্য '/' ব্যবহার করে আরও ভাল ব্যবহার করুন Path.DirectorySeparatorChar:

তাই ভালো:

path.split(Path.DirectorySeparatorChar).Last() 

1
এই সমাধানটি ব্যবহার করার ক্ষেত্রে আমি যে জিনিসটি পছন্দ করি না তা হ'ল এটি অনুমান করে যে স্ট্রিংটি কোথা থেকে আসছে। যদি তারা উইন্ডোজ সিস্টেমে * নিক্স লগগুলি পড়ছেন? তারপরে ভুল চরিত্রটি ব্যবহার করা হবে এবং আপনি ইচ্ছাকৃত প্রভাবের পরিবর্তে পুরো পথটি শেষ করবেন। শুধু আমার 2 সেন্ট।
বব জি

আমি ইহার উপর আপনার সাথে একমত. ওপি 'বর্তমান ডিরেক্টরিটির শেষ অংশ' বলেছিল তাই এটি ঠিক আছে।
Muad'Dib

6
var lastFolderName = Path.GetFileName(
    path.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar));

পাথটি ফরোয়ার্ড স্ল্যাশ বিভাজক বা ব্যাকস্ল্যাশ বিভাজককে ধারণ করে যদি এটি কাজ করে।


1
এটি স্ট্রিংয়ের মতো দেখাচ্ছে ri ট্রিমেন্ড () একাধিক অক্ষর গ্রহণ করে, তাই একাধিক কল ব্যবহার করার দরকার নেই। এমএসডিএন.মাইক্রোসফটকম
কাইল

1
@ কাইলডেলানী তাই এটি করে! উত্তর সামঞ্জস্য।
হোল্ফ

1
এটি একটি প্যারাম অ্যারে, তাই .TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar)কাজ করে।
কাইল

1
.TrimEnd () এর প্রয়োগকৃত অবস্থানটি ভুল। এটি Path-GetFileName নয়, পথে প্রয়োগ করা উচিত । @ ফ্যাটলড
টনি

2

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

String newString = "";
Sting oldString = "/Users/smcho/filegen_from_directory/AIRPassthrough";

int indexOfLastSlash = oldString.LastIndexOf('/', 0, oldString.length());

newString = oldString.subString(indexOfLastSlash, oldString.length());

কোড বন্ধ থাকতে পারে (আমি এটি পরীক্ষা করে দেখিনি) তবে ধারণাটি কার্যকর হওয়া উচিত


1

এটি আমার সাথে পুরোপুরি সূক্ষ্ম কাজ করে :)

Path.GetFileName(path.TrimEnd('\\')


0

আপনি উরি ক্লাসও ব্যবহার করতে পারেন।

new Uri("file:///Users/smcho/filegen_from_directory/AIRPassthrough").Segments.Last()

আপনি যদি অন্য কোনও বিভাগ পেতে চান বা ওয়েব ঠিকানা দিয়ে একই জিনিসটি করতে চান তবে আপনি এই শ্রেণিটি ব্যবহার করতে পছন্দ করতে পারেন।

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