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

Вышеупомянутый метод по какой-либо причине перезаписывает выходной файл? Мне нужно установить положение выходного файла перед использованием метода 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

@ пользователь917670 ничего. 'File.Open', в конце концов, также вызывает' return new FileStream (путь, режим, доступ, общий доступ); '. – 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(); 
Смежные вопросы