如何将文本附加到多个文件

我不是程序员,但我是研究员,我需要修改一些文件。 我有许多带* .mol扩展名的文本文件位于c:\ abc \目录中。 我需要将包含以下文本“M END”的行附加到此列表中的每个文件。 我尝试在C#中使用但没有任何结果:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { StreamWriter sw = new StreamWriter("c:\\abc\\*.mol", true); sw.WriteLine("M END"); sw.Close(); } } } 

请建议解决方案。

谢谢!

你是否满意这个oneliner你可以放入任何DOS批处理(.bat)文件:

 FOR %%I IN (c:\abc\*.mol) DO ECHO M END>>%%I 
 foreach (string fileName in Directory.GetFiles("directory", "*.mol")) { File.AppendAllText(fileName, Environment.NewLine + "M END"); } 

您需要遍历匹配该模式的所有文件并单独写入它们。 您使用的StreamWriter构造函数仅支持写入单个文件( 源 )。

您可以使用以下命令获取文件列表:

  string[] filePaths = Directory.GetFiles("c:\\abc\\", "*.mol"); 

您需要遍历目录中的文件。 DirectoryInfo / FileInfo可以很容易地执行此操作。 此外,由于您要追加到最后,您需要在最后编写签名之前查找流。

这是一个仅适用于该位置的解决方案。 如果需要,您将需要添加递归支持以下降到子目录中。

 using System; using System.Collections.Generic; using System.Text; using System.IO; namespace appender { class Program { static void AppendToFile(FileInfo fi) { if (!fi.Exists) { return; } using (Stream stm = fi.OpenWrite()) { stm.Seek(0, SeekOrigin.End); using (StreamWriter output = new StreamWriter(stm)) { output.WriteLine("M END"); output.Close(); } } } static void Main(string[] args) { DirectoryInfo di = new DirectoryInfo("C:\\abc\\"); FileInfo[] fiItems = di.GetFiles("*.mol"); foreach (FileInfo fi in fiItems) { AppendToFile(fi); } } } }