Web ページから渡された文字列について、指定されたディレクトリとサブディレクトリの下にあるすべてのファイルをチェックするコードを作成しようとしています。今のところ、私はこのコードを持っています:
private void ProcessDirectory(string targetDirectory, string origDirectory, string ObjectName)
{
string[] fileEntries = Directory.GetFiles(targetDirectory);
string[] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
foreach (string fileName in fileEntries)
{
ProcessFile(fileName, origDirectory, ObjectName);
}
foreach (string subdirectory in subdirectoryEntries)
ProcessDirectory(subdirectory, origDirectory, ObjectName);
}
private void ProcessFile(string path, string origDirectory, string ObjectName)
{
if (ObjectName != "")
{
var fileLines = File.ReadAllLines(path);
List<string> fileItems = new List<string>(fileLines);
if (fileItems.Contains(ObjectName))
{
string sExt = Path.GetExtension(path).ToLower();
if (sExt == ".txt")
{
listTextFiles.Items.Add(path.Replace(origDirectory, ""));
}
}
}
動作しますが、問題は、ファイル内の完全な単語しか検索しないことです。たとえば、「Account」という単語を探し、ファイルに「Account」という単語が含まれている場合、コードは機能します。ファイルに「AccountCode」という単語が含まれている場合、検索で見つかりません。それを修正する方法はありますか?
もう1つの質問は、プロセスの最後に、指定されたディレクトリとすべてのサブディレクトリの下でチェックされたファイルの数を示すカウンターを追加する方法です。