답변:
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
에서 설명 :
주어진 경로의 이름과 확장 부분을 반환합니다. 결과 문자열에는 경로에서 마지막 백 슬래시 ( "\"), 슬래시 ( "/") 또는 콜론 ( ":") 문자 뒤에 오는 경로 문자가 포함됩니다. 후행 슬래시, 슬래시 또는 콜론 문자를 제거한 후 경로에 백 슬래시가없는 경우 결과 문자열은 전체 경로입니다. 경로가 널인 경우 결과 문자열은 널입니다.
Path.GetDirectoryName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
c:\projects\roott\wsdlproj\devlop\beta2
되며 OP가 이후에 있었던 것이 아닙니다.