如何将MemoryStream写入文本文件的末尾

时间:2014-04-24 05:11:03

标签: c# .net vb.net

我已经使用此代码将内存流数据写入文本文件。

 Dim memoryStrm As New MemoryStream()
        Dim writer As New StreamWriter(memoryStrm)
      Dim thefile As New FileStream(Application.StartupPath & "\DocsLog" & ".txt", FileMode.Open, FileAccess.Write, FileShare.ReadWrite)

            ' now Write the MemoryStream to the file
            memoryStrm.WriteTo(theFile)

但是当我将数据写入文本文件时,我将它放在以前的内容中。我应该如何将memorystream写入文本文件的末尾? (仅将内存流数据添加到文件末尾)

3 个答案:

答案 0 :(得分:4)

待办事项

theFile.Seek(0, SeekOrigin.End)

在写任何东西之前

答案 1 :(得分:3)

使用FileStream构建器中的一个FileMode并指定FileMode.Append而不是FileMode.Open。即使用简单的contructor

 Dim thefile As FileStream = _
        new FileStream(fileName, FileMode.Append)

然后使用Stream.CopyTo将源流复制到目标。

  

复制从当前流中的当前位置开始,并且在复制操作完成后不会重置目标流的位置。

memoryStrm.CopyTo(theFile);

注意:

  • 确保正确处理流(即在C#中使用using
  • 如果编码不匹配,则
  • 从内存流中复制字节可能会破坏编码。如果两者都是具有未知编码的文本文件,则可能更适合阅读文本内容并使用连接文本重新创建文件。
  • 在内存流的开头注意BOM。

答案 2 :(得分:2)

只需将FileMode.Open更改为FileMode.Append。