我只是要合并在一个给定的目录中的所有文本文件,类似于下面的命令提示符下命令:合并多个文本文件 - StreamWriter不写入一个文件?
cd $directory
copy * result.txt
我已经写了下面的代码,它几乎完成我想要的东西,但它做一些奇怪的事情。当StreamWriter
写入第一个文件(或i = 0
)时,它实际上并不写入任何内容 - 文件大小仍为0字节,尽管第一个文件大约为300 KB。但是,其他文件写入成功执行。
如果我将命令提示符的输出与来自C#代码的输出比较,可以看到缺少大块文本。此外,命令提示符结果为1,044 KB,其中C#结果为700 KB。
string[] txtFiles = Directory.GetFiles(filepath);
using (StreamWriter writer = new StreamWriter(filepath + "result.txt"))
{
for (int i = 0; i < txtFiles.Length; i++)
{
using (StreamReader reader = File.OpenText(txtFiles[i]))
{
writer.Write(reader.ReadToEnd());
}
}
}
我使用的StreamWriter
/StreamReader
不正确?
当程序再次运行在同一个目录中时,FileMode.OpenOrCreate'会再次将所有文件添加到输出文件。而是使用'FileMode.Create'来完全覆盖它或'FileMode.CreateNew'来获取它已经存在的异常。 – Herdo
@Herdo该程序在运行之前删除与'filePath'变量匹配的所有现有文件夹,因此该实现应该是可以的。谢谢! – TimeBomb006