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

本文关键字:文本 文件 MemoryStream | 更新日期: 2023-09-27 17:59:52

我用这段代码将内存流数据写入文本文件。

 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写入文本文件末尾

执行

theFile.Seek(0, SeekOrigin.End)

在写入任何内容之前,

使用一个接受FileModeFileStream构造函数,并指定FileMode.Append而不是FileMode.Open。即使用简单的构造器:

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

然后使用stream.CopyTo.将源流复制到目的地

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

memoryStrm.CopyTo(theFile);

注:

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

只需更改FileMode。打开FileMode.Append.