파일을 검색하는 재귀 적 방법을 쓰고 일치하는 경우 콘솔 창에 전체 경로를 인쇄합니다. 분명히 이것이 많은 결과를 반환한다면 결과를 검토 할 적절한 시간을 제공하지 않고 화면을 빠르게 채울 것입니다. 콘솔의 CursorLeft
속성이 결과를 검토 할 수 있도록 ReadKey()
을 삽입 할 특정 위치에 도달 할 때 잡는 방법이 필요합니다.Console.CursorTop이 위치에 도달 할 때 캐치
static void FileSearch(string Base, string Pattern)
{
if (!Directory.Exists(Base)) return;
string _Patt = Pattern.ToLower();
var Files = Directory.GetFiles(Base).Where(File
=> Path.GetFileName(File).ToLower().Contains(_Patt));
foreach (string File in Files)
Console.WriteLine(File);
string[] Dirs = Directory.GetDirectories(Base);
foreach (string Dir in Dirs)
FileSearch(Dir, Pattern);
}
내가 위치를 추적 루프가 반복 될 때마다 그것을 확인하기 위해, 증가하는
int
처럼, 인덱서의 어떤 종류를 추가 할 수 있다는 것을 알고 있어요
및 int
을 것을 다음과 같이 내 검색 방법은 ref
으로 전달하여 모든 통화가 동일하게 보일 수 있습니다. int
. 또한 각 반복마다 현재 위치를 간단히 확인할 수 있음을 알고 있습니다. 이 작업을 수행하는 더 깨끗한 방법이 있을지 궁금해하고 있습니다. 아마도 이벤트 처리와 유사할까요?
그것은 나에게 작은 소리. 왜 그냥/p (페이지 용) 옵션을주고 모든 Console.WindowHeight 라인과 프롬프트에 대해 멈추지 않을까요? 아니면 그냥 모든 것을 출력하고 그녀가 필요하다면 사용자 파이프를 "more"로 보냅니 까? –
정적'int'는 충분하지 않습니까? 그것은 구현하는 것이 사소한 것입니다. –
이것은 실제로 내가하고있는 일의 버려진 버전입니다. 이것은 정규 표현식을 사용한 검색과 같은 고급 검색 기능을 제공하기 위해 클래스 라이브러리의 일부로 구현됩니다. 내 목표는 검색 방법 자체를 가능한 짧게 유지하기 위해 재귀 적 메서드 내에서 위치를 검사 할 필요성을 제거하는 것입니다. 그러나 나는 이것을 분석하고 어떤 문체 개선보다 더 많은 두통을 피할 수 있다는 것에 동의하기 시작했습니다. –