回答:
DirectoryInfo.Nameを参照してください。
string dirName = new DirectoryInfo(@"c:\projects\roott\wsdlproj\devlop\beta2\text").Name;
これを試して
var myFolderName = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
var result = Path.GetFileName(myFolderName);
@"c:\projects\roott\wsdlproj\devlop\beta2\text\"
あなたはこれを使うことができます:
string path = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
string lastDirectory = path.Split(new char[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();
StringSplitOptions.RemoveEmptyEntries
トリックを行います。
単に使う 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"
ファイルシステムにアクセスして、text.txtがディレクトリであるか単なるファイルであるかを確認する以外に方法はないと考えました。シンプルなものが欲しかったら、たぶん次のように使えます:
s.Substring(s.LastIndexOf(@"\"));
DirectoryInfoオブジェクトを作成しなくても機能する別の方法を次に示します。重要な点は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);
これも同様に行うことができます。
var directoryName = System.IO.Path.GetFileName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
using static System.IO.Path;
var dir = GetFileName(path?.TrimEnd(DirectorySeparatorChar, AltDirectorySeparatorChar));
.NETソースGetFileName
からの説明:
指定されたパスの名前と拡張部分を返します。結果の文字列には、パスの最後のバックスラッシュ( "\")、スラッシュ( "/")、またはコロン( ":")文字に続くパスの文字が含まれます。末尾のスラッシュ、スラッシュ、またはコロン文字を削除した後、パスにバックスラッシュが含まれていない場合、結果の文字列はパス全体になります。パスがnullの場合、結果の文字列はnullです。
Path.GetDirectoryName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
c:\projects\roott\wsdlproj\devlop\beta2
、OPの目的はそれではありません。