Я создал массив строк, который использует функцию Directory.GetFiles, которая заполняет массив расширениями файлов .cs из всех подкаталогов моего проекта. Это нормально, однако я пытался записать эти файлы в текстовый документ, исключив определенные файлы из массива, такие как «AssemblyInfo.cs» и «TemporaryGeneratedFiles_xxx.cs», используя метод contains для фильтрации файлов с этими именами. По большей части подавляющее большинство этих файлов не были записаны в текстовый документ, однако в некоторых случаях эти файлы удается обнаружить в текстовом документе.
Я пробовал использовать оператор foreach вместо цикла for. Я пробовал играть с str.flush()
, str.close()
, directoryNames.Dispose()
и directoryNames.Close()
, помещая их в разные места цикла for. Я попытался вложить операторы if
вместо использования оператора &&
. Оператор ||
в этой ситуации не работает. Я пробовал использовать полное имя файла и только его фрагменты, и ничего из этого не работает. В какой-то момент мне удалось удалить все файлы, в которых было «Временное», но файлы «AssemblyInfo.cs» все еще остаются. Я даже сделал метод, чтобы полностью удалить все, что содержит слово «временный» или «сборка» в имени файла, но это также не помогло.
FileStream directoryNames = new FileStream(dirListPath, FileMode.OpenOrCreate);
StreamWriter str = new StreamWriter(directoryNames);
string[] allFiles = Directory.GetFiles(dirPath, "*.cs", SearchOption.AllDirectories);
for (int i = 0; i < allFiles.Length; i++)
{
if ((!allFiles[i].Contains("Temporary")) && (!allFiles[i].Contains("Assembly")))
{
str.Write(allFiles[i] + Environment.NewLine);
}
}
str.Flush();
str.Close();
directoryNames.Dispose();
directoryNames.Close();
Никаких сообщений об ошибках не появляется, но, как указано выше, неожиданные файлы появляются там, где их быть не должно. Любая помощь будет принята с благодарностью.
str.Write(allFiles[i] + Environment.NewLine);
. Просматривайте его до тех пор, пока значениеallFiles[i]
не станет файлом, который вы не хотите добавлять в файл (да, это может занять некоторое время и будет утомительным и скучным). Каково точное значениеallFiles[i]
, когда это происходит? - person mjwills   schedule 03.07.2019however, there are a few cases where these files manage to show up within the text document.
Не могли бы вы поделиться с нами этими несколькими случаями? - person mjwills   schedule 03.07.2019dirListPath
перед запуском кода? У меня есть подозрение, что использованиеOpenOrCreate
означает, что вы пишете в начало файла, но что старое содержимое файла может остаться там, так что, возможно, вы видите старый текст в файле? Один из способов проверить мою теорию — записатьTHIS IS TO THE END
в поток вне цикла, а затем посмотреть, где это заканчивается в файле._ - person mjwills   schedule 03.07.2019