私が持っている場合:
C:\ temp\foo\bar \
(注:バーはディレクトリです)
どうすれば解析できますか:
バー
私はそれを考え出した。
DirectoryInfo info = new DirectoryInfo(sourceDirectory_);
string currentDirectoryName = info.Name;
試してみてください
System.IO.Path.GetFileName("C:\\temp\\foo\\bar");
使用するだけです:
string dirname = new DirectoryInfo(@"C:\temp\foo\bar\").Name;
MSDNによると、これはフルパスではなくディレクトリの名前を返します。
お役に立てれば.........
たくさんの人が答えを撤回したようですが、それはおそらく残念です。
これは、「人に魚を教える」という品質のためだけに、述べる価値があります。短く、エレガントで、2つの別々のもので構成されており、一度学習すると、他の問題に再適用できます。
string lastPiece = wholePath.Split('\\').Last();
リストが空の場合、Last
がスローされます。
これを行う最も簡単な方法なし新しいDirectoryInfoインスタンスを作成することはPath.GetFileName静的メソッド。これはSystem.IOにあります。
using System.IO;
string lastFolderName = Path.GetFileName(@"C:\Folder1\Folder2");
変数は「Folder2」に設定されます。
これはかなり効率的です DirectoryInfoクラスの新しいインスタンスを作成することです!
瞬時に4つの方法が考えられます
string dirname = new DirectoryInfo(path).Name;
Console.WriteLine(dirname);
これを試して
string DirName = System.IO.Directory.GetParent(@"C:\temp\foo\bar\").Name;
Unixでは、これはベース名として知られています。簡単なグーグルがこれを思いつきました C#バージョンのリンク 。他にもあると思います...
上記の答えがニーズを満たさない場合は、最後の文字列を部分文字列化してみませんか。
string dirName = originalDirName.Substring(originalDirName.LastIndexOf("\\") + 1);
確かに、originalDirNameが\で終わっていないかどうか、originalDirNameがゼロより長く、実際に\文字が含まれているかどうかを確認する必要があります。