2011-08-20 3 views
2

내 목표는 DirectoryInfo.FullName이 특수 폴더 중 하나인지 확인하는 것입니다.DirectoryInfo.FullName이 특수 폴더인지 확인하십시오.

 DirectoryInfo directoryInfo = new DirectoryInfo("Directory path"); 

     if (directoryInfo.FullName == Environment.GetFolderPath(Environment.SpecialFolder.Windows) || 
      directoryInfo.FullName == Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles ||) 
      ... 
      ... 
      ) 
     { 
      // directoryInfo is the special folder 
     } 

을하지만 많은 특수 폴더 (쿠키, ApplicationData, InternetCache 등이 있습니다 : 여기

나는 (그들이 동일한 경우 각각의 특정 폴더에 directoryInfo.FullName을 확인)이를 위해 뭘하는지입니다). 이 작업을보다 효율적으로 수행 할 방법이 있습니까?

감사합니다.

답변

4

이 다음 코드를 사용해보십시오.

1

여기에서 http://geekswithblogs.net/shahed/archive/2006/12/06/100427.aspx과 같이 해당 열거에서 모든 값을 가져 와서 생성 된 경로의 수집에 대해 확인하려면 리플렉션을 사용하십시오.

 bool result = false; 
     DirectoryInfo directoryInfo = new DirectoryInfo("Directory path"); 
     foreach (Environment.SpecialFolder suit in Enum.GetValues(typeof(Environment.SpecialFolder))) 
     { 
      if (directoryInfo.FullName == Environment.GetFolderPath(suit)) 
      { 
       result = true; 
       break; 
      } 
     } 

     if (result) 
     { 
      // Do what ever you want 
     } 

희망이 도움말 :

1

나는 주어진 답변, 나는 특수 폴더 싫어을 수있는 유일한 방법이 될 것으로 보인다 두려워이기 때문에 무슨 일이 매우 간단한 함수되어야한다 - 당신이

을 포함하기 때문에

void CollectFiles(string strDir, string pattern) { 
    DirectoryInfo di = new DirectoryInfo(strDir); 
    foreach(FileInfo fi in di.GetFiles(pattern) { 
    //store file data 
    } 
    foreach(DirectoryInfo diInfo in di.GetDirectories()) { 
    CollectFiles(diInfo); 
    } 
} 

못생긴되다

Check If This Is A Special Folder And Deal With It And Its Child Folders Differently(); 

어디서나, 원격 PC, 서버 등에서 존재할 수있는 폴더를 보유하고 있으면 충분합니다.하지만 UNIX/Linux 방식에서 실제로 잘못된 점은 폴더에 대한 링크를 사용하고 대상 실제 폴더에 이동하려면 링크를 변경하십시오. 그런 다음 평범한 폴더처럼 모든 것을 처리하는 멋진 기능으로 반복 할 수 있습니다.