0

C#の特定のディレクトリからFileNamesをバッファリングする方法を見つけようとしています。これはつまり:

与えられたディレクトリ

C:/ MyDir

ファイルが含まれています:

File1_orig.txt

File1_edited.txt

File2_orig.txt

File2_edited.txt

..。

Filen_orig.txt

Filen_edited.txt

ファイル名(ファイルパス全体ではなく、ファイル名だけ、たとえばString [] filename = Filen_orig.txt)を一時的な文字列に保存し、それらに対して簡単な比較を実行して、ターゲット文字列が含まれているかどうかを確認します。

文字列を次の場所に渡します。

while(STILL FILES IN DIRECTORY)
{
    string[] exFileName = {BUFFER FILENAME HERE}
    string[] words = exFileName.Split('_');
    string[] toCompare = "edited";
            bool result;
            foreach (string word in words)
            {
                Console.WriteLine(word);
                bool result = toCompare.Equals(word, StringComparison.OrdinalIgnoreCase);
                if (result)
                {
                    Console.WriteLine("success");
                }
            }
            Console.ReadLine();

調べているファイルが編集されているか(* _edited.txt)、オリジナル(* _original.txt)であるかを確認し、ファイルが編集されている場合は、ファイルをさらに処理します。

ファイルパスの読み取りを自動化する方法を知っている人はいますか?

どうもありがとうございます。

4

2 に答える 2

1

DirectoryInfo.GetFilesはどうですか?

DirectoryInfo di = new DirectoryInfo(@"c:\");

// Get only subdirectories that contain the letter "p."
FileInfo[] files= di.GetFiles("*.txt");

foreach (FileInfo fi in files) 
{
   string exFileName = fi.FileName;
  ...
}
于 2012-04-27T15:59:27.213 に答える
1

_editedビットを含むファイルがあるかどうかを確認したい場合は、次を使用できます。

bool success = Directory.GetFiles(@"c:\MyDir").Any(p => p.Contains("_edited"));

あなたのコードがあまり明確ではないので(あなたの説明もそうではないので)、これがあなたが望むものであると私は少し推測しています

編集:編集したすべてのファイルを表示するには:

            foreach(var file in Directory.GetFiles(@"c:\MyDir").Where(p => p.Contains("_edited")))
        {
            Console.WriteLine(" {0}: edited", file);
        }

また、「System.Linq」を使用している必要があります

于 2012-04-27T16:05:43.020 に答える