2012-01-11 12 views
0

データをテキストファイルから取得する挿入クエリを作成しようとしています。しかし、テキストファイルはフォルダ内にあります。私は階層を示してみましょう。繰り返しでディレクトリを検索するときにディレクトリをスキップする方法はありますか? (C#)

メインフォルダ - >多数のフォルダ - >多数のフォルダ - >テキストファイルもORJという名前の別のフォルダがあります。

テキストファイルを含むこのフォルダのそれぞれには、ORJという別のフォルダがあります。私はorjを処理したくありません。テキストフォルダとそれの横にあるpdfだけです。どうしたらいいですか?私はコードを見つけ、それを修正しようとしています。これは途中でC#です。

void ProcessFiles(string path) 
{ 
    Stack<string> stack; 
    string[] files; 
    string[] directories; 
    string dir; 

    stack = new Stack(); 
    stack.Push(path); 

    while (stack.Count > 0) { 

     // Pop a directory 
     dir = stack.Pop(); 

     files = Directory.GetFiles(dir); 
     foreach(string file in files) 
     { 
      // Process each file 
     } 

     directories = Directory.GetDirectories(dir); 
     foreach(string directory in directories) 
     { 
      // Push each directory into stack 
      stack.Push(directory); 
     } 
    } 
} 
+3

キーワード「continue」を見てください –

+2

どのような種類の再帰型btwですか? – TJHeuvel

答えて

2

スタックでこれを行う必要がありますか?

あなたは木の代わりに

void ProcessFolder(string path) { 

    // Process the files 
    foreach(var file in Directory.GetFiles(path)) { 
     // Process each file 
    } 

    // process the sub folders 
    foreach (var subFolder in Directory.GetDirectories(path).Where(fld => System.IO.Path.GetFilename(fld) != "ORJ")) { 
     ProcessFolder(subFolder); 
    } 

} 

HTH、 アランを下に再帰的でした。

0

コードのどこかで、ディレクトリの名前を確認してからスタックに追加しないといけません。例えば

directories = Directory.GetDirectories(dir); 
    foreach(string directory in directories) 
    { 
     if(directory != "ORJ")    // Push each directory except orj into stack 
      stack.Push(directory); 
    } 
+0

私はそれを試しました。それはうまくいかなかった。ディレクトリはc:// sth/sth/sth/Orjと同じですが何も助けなければ、私はそれを解析してifを書くでしょう。 – Gece

+0

@Gece、 'directory.EndsWith(" ORJ ")'についてどうですか? – tafa

+0

次に、ファイル名(ヒント)を取得する方法に関するドキュメントを参照してください。 – TJHeuvel

関連する問題