web-dev-qa-db-ja.com

C#で現在のディレクトリ名(の最後の部分)を取得する

たとえば/Users/smcho/filegen_from_directory/AIRPassthroughから現在のディレクトリの最後の部分を取得する必要があり、AIRPassthroughを取得する必要があります。

Pythonでは、このコードで取得できます。

import os.path

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

または

print os.path.basename(path)

C#で同じことを行うにはどうすればよいですか?

追加されました

回答者の助けを借りて、必要なものを見つけました。

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);
136
prosseek

Path.GetFileName を探しています。
パスが\で終わる場合、これは機能しないことに注意してください。

116
SLaks

あなたが試すことができます:

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

フォルダ名を取得する最も簡単な方法は、DirectoryInfoのインスタンスをパスで初期化することです。

string path = "/Users/smcho/filegen_from_directory/AIRPassthrough";
string result = new DirectoryInfo(path).Name;

これは、パスがディレクトリセパレーターの有無に関係なく、順方向または逆方向のセパレーターが使用されている場合に同じように機能します。

25
Simon Bondo

さて、正確に質問のタイトルに答えてください:-)

var lastPartOfCurrentDirectoryName = 
   Path.GetFileName(Environment.CurrentDirectory);
10
Jakob Möllås

これは、あなたが持っているものに応じて、わずかに異なる答えです。ファイルのリストがあり、ファイルが存在する最後のディレクトリの名前を取得する必要がある場合、これを行うことができます。

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

これは「2938_parentid」を返します

9
ProVega

分割の呼び出しに '/'を使用するよりも、Path.DirectorySeparatorCharを使用する方が適切です:

そのようです:

path.split(Path.DirectorySeparatorChar).Last() 
8
Muad'Dib
var lastFolderName = Path.GetFileName(
    path.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar));

これは、パスにスラッシュ区切り文字またはバックスラッシュ区切り文字が含まれている場合に機能します。

4
Holf

これを試して:

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

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

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

コードはオフになっている可能性があります(テストしていません)が、アイデアは機能するはずです

2

以下のコードを試すことができます:

Path.GetFileName(userpath)

0
Code_Beginner

これは私と一緒に完璧に動作します:)

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