2012-05-14 76 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();