2012-05-14 17 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メソッドを使用する前に、出力ファイルの位置を設定する必要がありますか?

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

それとも

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

オデッドにより示唆されるように:あなたはデータを追加したい場合は

+1

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

+0

あなたは何をしようとしていますか? – gdoron

+0

n個のファイルを既存のファイルにマージする – user917670

答えて

5

FileMode.Appendに渡します

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

これは、ファイルの最後に出力を追加します。

2

は、このようなものを使用します。代わりにOpenWrite使用Open

+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(); 
関連する問題