[c#] C #에서 부모 디렉터리를 찾으려면 어떻게합니까?

이 코드를 사용하여 디버그 디렉토리를 찾습니다.

public string str_directory = Environment.CurrentDirectory.ToString();

"C:\\Users\\Masoud\\Documents\\Visual Studio 2008\\Projects\\MyProj\\MyProj\\bin\\Debug"

아래와 같이 상위 폴더를 어떻게 찾을 수 있습니까?

"C:\\Users\\Masoud\\Documents\\Visual Studio 2008\\Projects\\MyProj\\MyProj"



답변

System.IO.Directory.GetParent()주어진 디렉토리의 상위 디렉토리를 검색하는 데 사용할 수 있습니다 .


답변

string parent = System.IO.Directory.GetParent(str_directory).FullName;

BOL 참조


답변

..\..기존 경로에 추가 하면 운영 체제가 상위 상위 폴더를 올바르게 검색합니다.

이 작업을 수행해야합니다.

System.IO.Path.Combine("C:\\Users\\Masoud\\Documents\\Visual Studio 2008\\Projects\\MyProj\\MyProj\\bin\\Debug", @"..\..");

해당 경로를 찾아 보면 상위 디렉토리를 찾아 볼 것입니다.


답변

의 변형이 System.IO.Path.Combine(myPath, "..")가장 쉽고 가장 신뢰할 수 있음을 발견했습니다 . Northben의 말이 사실이라면 GetParent는 후행 슬래시가 있으면 추가 호출이 필요합니다. 나에게 그것은 신뢰할 수 없습니다.

Path.Combine은 슬래시가 잘못되지 않도록합니다.

..Windows의 다른 모든 곳에서와 똑같이 작동합니다. \..cmd 또는 explorer의 경로에 원하는 수를 추가 할 수 있으며 아래에서 설명한대로 정확하게 작동합니다.

몇 가지 기본 ..동작 :

  1. 파일 이름이 있으면 ..잘라냅니다.

Path.Combine(@"D:\Grandparent\Parent\Child.txt", "..") => D:\Grandparent\Parent\

  1. 경로가 디렉토리 인 ..경우 한 단계 위로 이동합니다.

Path.Combine(@"D:\Grandparent\Parent\", "..") => D:\Grandparent\

  1. ..\.. 두 번 연속으로 동일한 규칙을 따릅니다.

Path.Combine(@"D:\Grandparent\Parent\Child.txt", @"..\..")=> D:\Grandparent\
Path.Combine(@"D:\Grandparent\Parent\", @"..\..")=>D:\

  1. 그리고 이것은 똑같은 효과가 있습니다.

Path.Combine(@"D:\Grandparent\Parent\Child.txt", "..", "..")=> D:\Grandparent\
Path.Combine(@"D:\Grandparent\Parent\", "..", "..")=>D:\


답변

‘조부모’디렉토리를 얻으려면 Directory.GetParent ()를 두 번 호출하십시오 .

var gparent = Directory.GetParent(Directory.GetParent(str_directory).ToString());


답변

Directory.GetParent아마도 더 나은 대답 일 수 있지만 완전성을 위해 string을 취하고 string을 반환하는 다른 메서드가 있습니다 : Path.GetDirectoryName.

string parent = System.IO.Path.GetDirectoryName(str_directory);


답변

이렇게 :

System.IO.DirectoryInfo myDirectory = new DirectoryInfo(Environment.CurrentDirectory);
string parentDirectory = myDirectory.Parent.FullName;

행운을 빕니다!