web-dev-qa-db-ja.com

完全なファイルパスからフォルダー名を取得する

アプリケーションのフルパスからフォルダー名を取得するにはどうすればよいですか?

これは以下のファイルパスです。

c:\projects\root\wsdlproj\devlop\beta2\text

ここで、「テキスト」はフォルダ名です。

このパスからそのフォルダ名を取得するにはどうすればよいですか?

105
vasmay

DirectoryInfo.Name を参照してください:

string dirName = new DirectoryInfo(@"c:\projects\roott\wsdlproj\devlop\beta2\text").Name;
191
Alex Pacurar

ファイルパスから親フォルダ名を取得したいと思います。簡単に入手できます。 1つの方法は、FileInfo型オブジェクトを作成し、そのDirectoryプロパティを使用することです。

例:

FileInfo fInfo = new FileInfo("c:\projects\roott\wsdlproj\devlop\beta2\text\abc.txt");

String dirName = fInfo.Directory.Name;
27
Shekhar

これを試して

var myFolderName = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
var result = Path.GetFileName(myFolderName);
13

これを使用できます:

string path = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
string lastDirectory = path.Split(new char[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();
9
Kristof Claes

単に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"
3
123iamking

Text.txtがディレクトリなのかファイルなのかを確認するためにファイルシステムに移動する以外に方法はないと考えました。シンプルなものが必要な場合は、次のように使用できます。

s.Substring(s.LastIndexOf(@"\"));
3
Zuoanqh

この場合、取得するファイルはstrpath変数に保存されます。

string strPath = Server.MapPath(Request.ApplicationPath) + "/contents/member/" + strFileName;
2
krishna

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);
1
Roberto

これも同様に行うことができます。

var directoryName = System.IO.Path.GetFileName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
1
Steve Cooper

previousanswers に基づく(ただし修正済み)

using static System.IO.Path;

var dir = GetFileName(path?.TrimEnd(DirectorySeparatorChar, AltDirectorySeparatorChar));

。NETソース からのGetFileNameの説明::

指定されたパスの名前と拡張部分を返します。結果の文字列には、パス内の最後のバックスラッシュ( "\")、スラッシュ( "/")、またはコロン( ":")文字に続くパスの文字が含まれます。末尾のスラッシュ、スラッシュ、またはコロン文字を削除した後、パスにバックスラッシュが含まれていない場合、結果の文字列はパス全体になります。パスがnullの場合、結果の文字列はnullです。

0
marsze