我创建了一个利用Directory.GetFiles函数的字符串数组,该函数使用来自项目中所有子目录的.cs文件扩展名填充该数组。很好,但是,我想使用包含方法过滤包含这些名称的文件,同时将这些文件写入文本文档,同时从数组中排除“ AssemblyInfo.cs”和“ TemporaryGeneratedFiles_xxx.cs”之类的特定文件。在大多数情况下,这些文件中的大多数都没有写入文本文档,但是,在某些情况下,这些文件设法显示在文本文档中。
我试过使用foreach语句而不是for循环。我试着玩弄了str.flush()
,str.close()
,directoryNames.Dispose()
,并directoryNames.Close()
通过把它们放在for循环的不同点。我尝试嵌套if
语句而不是使用&&
运算符。该||
运营商并不在这种情况下工作。我尝试使用整个文件名,并且只使用文件名的一点点,但这似乎都不起作用。有一次我确实设法删除了所有带有“ Temporary”的文件,但“ 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();
没有错误消息发生,但是如上所述,意外的文件弹出了不应该出现的位置。任何帮助将不胜感激。
感谢所有张贴的人。经过一些测试,mjwillis是正确的。它没有覆盖文本文件中的内容,而是继续写入文件的顶部并添加到先前写入的内容上。通过添加进行修复
using (FileStream clearTextDocument = File.Create(dirListPath)) { }
在FileStream DirectoryNames行之前。如果此文档更具吸引力,请随意发布另一种清除文本文档的方法。