2011-12-21 2 views
1

특정 파일 경로의 각 폴더를 반복 한 다음 각 파일마다 반복되는 폴더를 반복하는 방법은 무엇입니까? 두 번째 foreach배열에 DirectoryInfo.GetDirectories 및 GetFiles를 추가하려면 중첩 된 foreach 루프가 필요합니까?

 DirectoryInfo dir = new DirectoryInfo(@"C:\Path"); 

     foreach (DirectoryInfo folders in dir.GetDirectories()) 

     foreach (DirectoryInfo files in folders.GetFiles()) 
+3

귀하가 직접 답변 해 주셨습니다. – Jan

+0

디렉터리의 각 폴더를 통과 한 다음 각 파일을 찾아 PDF 메타 데이터를 추출하고 싶지만 각 폴더 파일을 반복하는 방법을 파악할 수 없습니다. – MDL

+0

그러나 코드 *는 폴더의 모든 파일을 반복합니다. 단지'; '를 파일을 처리하는 코드 블록으로 대체하고 두 번째 foreach에서는'FileInfo'로'DirectoryInfo'를 교환하십시오. – Jan

답변

2

귀하의 세미콜론 그렇지 않으면 코드가 약간의 수정 작업을해야한다, 당신이 슬픔의 원인이 될 수있다.

 DirectoryInfo dir = new DirectoryInfo(@"C:\Path"); 
     foreach (DirectoryInfo folder in dir.GetDirectories()) 
     { 
      foreach (FileInfo file in folder.GetFiles()) 
      { 
       // do stuff with file 
      } 
     } 
+0

GetFiles가 DirectoryInfo를 반환하지 않습니다. – ChrisBint

+0

@ChrisBint 예, 타이핑되고 수정되었습니다. –

1

제목이 질문의 본문과 정확하게 일치하지 않습니다. 당신이 원하는 것은 하나의 배열에 모든 하위 디렉토리의 모든 파일을 추가하는 것입니다. 그 일의

한 가지 방법은 다음과 같습니다

DirectoryInfo dir = new DirectoryInfo(@"C:\Path"); 

List<FileInfo> files = new List<FileInfo>(); 

foreach (DirectoryInfo folder in dir.GetDirectories()) 
    foreach (FileInfo file in folder.GetFiles()) 
    { 
     files.Add(file); 
    } 

// files contains your list of files 
+0

디렉토리의 각 폴더를 통과 한 다음 각 파일을 찾아 PDF 메타 데이터를 추출하고 싶지만 각 폴더 파일을 반복하는 방법을 파악할 수 없습니다. – MDL

0
DirectoryInfo dir = new DirectoryInfo(@"C:\Path"); 

foreach (DirectoryInfo folders in dir.GetDirectories()) 
{ 
    foreach (FileInfo files in folders.GetFiles()) 
    { 
    //Do something 

    } 
} 
0

환장.

foreach(var file in new DirectoryInfo(@"C:\Path") 
          .GetDirectories() 
          .SelectMany(x => x.GetFiles())) 
    // linq baby 

(BTW, DI 및 FI, 프레임 워크에서 더 유용 아직 무시 클래스의 두 가지 사용에 대한 cudos) 당신이 뒤에있어하는 것은 디렉토리에 PDF 파일의 목록이며 어린이의 경우

3

을 너는 이것을 할 수있다.

DirectoryInfo di = new DirectoryInfo("c:\\output"); 
FileInfo[] files = di.GetFiles("*.pdf", SearchOption.AllDirectories); 
foreach (var fileInfo in files) 
{ 
    // do whatever you need 
} 
관련 문제