지정한 폴더의 하위 디렉터리 (MyFolder라고 부름)에서 파일을 찾고 하위 디렉터리를 다른 위치에서 사용할 문자열 변수에 저장하려고합니다. 문제는 지정된 폴더에 여러 개의 하위 디렉토리가있을 수 있으며 각 하위 디렉토리에는 하위 디렉토리가있을 수 있다는 것입니다. MyFolder 아래에있는 트리의 하위 디렉토리 중 하나만 내가 원하는 파일을 가지고 있습니다.SubDir을 문자열 반환 형식으로 가져 오기
아래 예제에서 두 위치 중 하나에있을 수 있지만 (이 예에서는 두 위치 모두 가능하지만 둘 다있을 수 없음)
-Root
--/MyFolder
---/a
-----/aa
-------------/blah.txt (or if not here, it may be...)
---/b
-------/blah.txt (...right here, possibly)
나는 물론, blah.txt
를 찾기 위해 노력하고있어.
루프는 다음과 같이 반복적으로 foreach
루프를 만들었지 만 파일이 서브 디렉토리 (/a, or /b)
의 첫 번째 레벨에서 발견되는 경우에만 하위 디렉토리 만 반환합니다. 파일이 /aa or /bb
또는 그보다 깊은 경우 (예 : root/a/aa/aaa,
) NULL을 반환합니다. 나는 디버거를 천천히 걷고 지역 주민들의 창문을 자세히 보면서 몇 시간을 보냈지만, 무엇이 잘못되었는지를 알 수는 없다. 두 번째 foreach
루프에있는 동안 파일을 찾고 올바른 하위 디렉토리 경로를 저장하지만 어떤 이유로 든 역순으로 루프를 시작합니다 (이전 디렉토리가 return "Null";
에 도달 할 때까지 표시). 파일이 하위 수준의 하위 수준에서 발견 된 경우에만 하위 수준의 하위 수준에서 발견 된 경우에만 발생합니다. 당신은 할 수 문자열 (어쩌면 다른 기능에 의해) 다른 곳에서 사용되는 같은 경로를 저장하려고하지 않는,하지만 표시해야하는 경우
class Program
{
static string dir = @"C:\MyFolder\";
static void Main(string[] args)
{
Console.WriteLine(GetDirectory(dir));
Console.ReadKey();
}
static string GetDirectory(string dir)
{
foreach (string dName in Directory.GetDirectories(dir))
{
foreach (string fName in Directory.GetFiles(dName, "blah.txt"))
{
return dName;
}
GetDirectory(dName);
}
return "NULL";
}
}
나는이 작품 같은 것을 본 적이있는 유일한 방법은 콘솔에서와 같이 void 반환 유형으로 즉시 반환합니다 (반환을 "Console.WriteLine(dName)"
으로 변경하고 함수 호출을 적절히 수정하여).
저는 C#에 익숙하지 않습니다. 코딩 경험은 이전에 JavaScript 및 AutoHotkey
에 있었기 때문에 이와 같은 언어에 대한 지식은 여전히 극히 제한되어 있으며, 모두 제가 C 초보자 가이드 북입니다. 인터넷을 통해 읽었습니다 ... 그리고 나는이 특정 문제에 대해 아무런 도움도없이 용감하게 조사했습니다. 그래서 그 어떤 도움이나 조언도 대단히 감사하겠습니다!
그건 너무 지나치게 쉬웠고 멋졌습니다. 단지 SearchOption 매개 변수를 인식하지 못했습니다. 특히 원본 제안에 대한 링크 및 추가 사항에 대해 감사드립니다. 대단히 감사합니다! – TheArtofX