ฉันจะรับชื่อโฟลเดอร์จากเส้นทางแบบเต็มของแอปพลิเคชันได้อย่างไร
นี่คือเส้นทางไฟล์ด้านล่าง
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;
ฉันคิดว่าคุณต้องการรับชื่อโฟลเดอร์หลักจากเส้นทางไฟล์ เป็นเรื่องง่ายที่จะได้รับ วิธีหนึ่งคือสร้างFileInfo
วัตถุประเภทและใช้Directory
คุณสมบัติ
ตัวอย่าง:
FileInfo fInfo = new FileInfo("c:\projects\roott\wsdlproj\devlop\beta2\text\abc.txt");
String dirName = fInfo.Directory.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(@"\"));
ในกรณีนี้ไฟล์ที่คุณต้องการรับจะถูกเก็บไว้ในตัวแปร strpath:
string strPath = Server.MapPath(Request.ApplicationPath) + "/contents/member/" + strFileName;
นี่คือวิธีอื่นที่ใช้ได้ผลสำหรับฉันโดยไม่ต้องสร้างวัตถุ 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));
คำอธิบายGetFileName
จากแหล่งที่มา. NET :
ส่งคืนชื่อและส่วนขยายของเส้นทางที่กำหนด สตริงผลลัพธ์ประกอบด้วยอักขระของพา ธ ที่ตามหลังเครื่องหมายทับขวา ("\"), สแลช ("/") หรือโคลอน (":") อักขระในพา ธ สตริงผลลัพธ์คือเส้นทางทั้งหมดหากพา ธ ไม่มีแบ็กสแลชหลังจากลบอักขระเครื่องหมายทับเครื่องหมายทับหรือโคลอน สตริงผลลัพธ์เป็นโมฆะหากพา ธ เป็นโมฆะ
Path.GetDirectoryName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
c:\projects\roott\wsdlproj\devlop\beta2
และนั่นไม่ใช่สิ่งที่ OP เกิดขึ้นหลังจากนั้น