4

如何在不覆盖现有输出文件的情况下使用Stream CopyTo方法?

public void MergeAndDeleteFiles(string outputFile, IEnumerable<string> inputFiles)
        {
            using (var output = File.OpenWrite(outputFile))
            {
                foreach (var inputFile in inputFiles)
                {
                    using (var input = File.OpenRead(inputFile))
                    {
                        input.CopyTo(output);
                    }
                }
             }
        }

上述方法由于某种原因覆盖了 outputFile?在使用 CopyTo 方法之前是否需要设置输出文件的位置?

4

3 回答 3

7

而不是OpenWrite使用Open并传入FileMode.Append

using (var output = File.Open(outputFile, FileMode.Append))

这会将输出附加到文件的末尾。

于 2012-05-14T08:40:00.813 回答
2

如果要附加数据,请使用以下内容:

using (var output = new FileStream(outputFile, FileMode.Append, FileAccess.Write, FileShare.Write))
{

或者

using (var output = File.Open(outputFile, FileMode.Append))
{

正如奥德建议的那样。

于 2012-05-14T08:38:55.043 回答
-1

使用 StreamWriter 写入文本文件:

// create a writer and open the file
TextWriter tw = new StreamWriter("date.txt");

// write a line of text to the file
tw.WriteLine(DateTime.Now);

// close the stream
tw.Close();
于 2012-05-14T08:40:31.517 回答