如何從應用程序的完整路徑獲取文件夾名稱?從完整文件路徑獲取文件夾名稱
這是下面的文件路徑,
c:\projects\root\wsdlproj\devlop\beta2\text
這裏的 「文本」 是文件夾名稱。
如何從此路徑獲取該文件夾的名稱?
如何從應用程序的完整路徑獲取文件夾名稱?從完整文件路徑獲取文件夾名稱
這是下面的文件路徑,
c:\projects\root\wsdlproj\devlop\beta2\text
這裏的 「文本」 是文件夾名稱。
如何從此路徑獲取該文件夾的名稱?
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);
如果你有一個文件名轉換爲字符串,返回文件名也 – swissben 2011-03-08 07:07:25
在這種情況下,文本是(無擴展名)文件名。我認爲那是OP之後的事情。如果它是一個文件夾或文件名實際上並不重要。如果字符串不包含文件名,這段代碼將會給他以後的內容。 – 2011-03-08 07:32:09
除非路徑以\像這樣結束:'@「c:\ projects \ roott \ wsdlproj \ devlop \ beta2 \ text \」' – 2011-03-08 08:25:32
您可以使用此:
string path = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
string lastDirectory = path.Split(new char[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();
如果路徑如下所示:@「c:\ projects \ roott \ wsdlproj \ devlop \ beta2 \ text \」,因此需要額外的DirectorySeparatorChar – 2011-03-08 07:02:40
@Alex - 我修改了我的代碼以使其工作這些路徑也是如此。 'StringSplitOptions.RemoveEmptyEntries'完成這個任務。 – 2011-03-08 08:24:25
根據http://msdn.microsoft.com/en-us/library/system.io.fileinfo.fileinfo.aspx,如果未提供所需的權限,FileInfo可能會引發異常。 – 2012-06-05 20:15:30
我想你想從文件路徑獲取父文件夾的名稱。很容易得到。 一種方法是創建一個FileInfo
類型對象並使用其屬性Directory
。
例子:
FileInfo fInfo = new FileInfo("c:\projects\roott\wsdlproj\devlop\beta2\text\abc.txt");
String dirName = fInfo.Directory.Name;
Path.GetDirectoryName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
這將返回'c:\ projects \ roott \ wsdlproj \ devlop \ beta2',這不是OP後的內容。 – 2011-03-08 07:30:45
在這種情況下,要獲得存儲在strPath的變量文件:
string strPath = Server.MapPath(Request.ApplicationPath) + "/contents/member/" + strFileName;
這也可以做到像這樣;
var directoryName = System.IO.Path.GetFileName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
這將返回一個空字符串 – disklosr 2014-12-17 14:24:34
@disklosr - 剛剛使用ScriptCs進行測試,並返回'text' – 2014-12-21 21:10:02
如果文件夾路徑不包含尾部反斜槓(例如[Path.GetDirectoryName( )](https://msdn.microsoft.com/en-us/system.io.path.getdirectoryname.aspx))。但是,該函數的名稱GetFileName()有點誤導。 – 2015-09-04 14:26:24
我想除了進入文件系統找出text.txt是一個目錄還是一個文件是沒有辦法的。如果你想簡單的東西,也許你可以使用:
s.Substring(s.LastIndexOf(@"\"));
爲了避免在字符串前面出現斜線: s.Substring(s.LastIndexOf(@「\」)+ 1); – 2016-05-31 20:33:02
這裏是爲我工作,而無需創建一個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);
謝謝亞歷克斯....這是我想... – vasmay 2011-03-08 07:02:42
非常感謝很多 – 2015-05-08 07:08:32
這不需要該文件夾實際存在於文件系統中(如果文件夾爲「c:\ projects \ root \ wsdlproj \ devlop」,該文件夾名稱將仍然爲「文本」 \ beta2 \ text「目前沒有存在於文件系統中)? – 2015-09-04 11:20:01