2012-05-14 77 views
2

如何在不覆盖现有输出文件的情况下使用Stream CopyTo方法?使用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方法之前设置输出文件的位置?

+1

可能重复:http://stackoverflow.com/questions/5096194/c-appending-contents-of-one-text-file-to-another -text-file –

+0

你想做什么? – gdoron

+0

将n个文件合并成一个现有的文件 – user917670

回答

5

代替OpenWrite使用Open并传递FileMode.Append

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

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

2

如果你想添加数据,然后使用是这样的:由俄德建议

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

或者

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

+0

最新的区别是什么?第一个只在写模式下打开它? – user917670

+0

@ user917670没有。 'File.Open'在最后还会调用'return new FileStream(path,mode,access,share);'。 – CodeCaster

-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();