使用内存流比从文件读取的好处

本文关键字:读取 文件 内存 | 更新日期: 2023-09-27 18:35:56

我最近在看一段代码,它使用System.Net.Mail.Attachment将文件附加到电子邮件中。 当前的实现是将附件作为文件存储到存储设备,并为其指定唯一名称。 然后,此文件将附加到邮件中,如下所示:

Attachment data = new Attachment(filename);
message.Attachments.Add(data);
然后

发送电子邮件,然后从存储设备中删除该文件。

文件存储在 MemoryStream(它已经是)中,然后将其作为附件传递给电子邮件不是更快/更好吗? 我会想象在 MailMessage 类中的某个地方,文件被读入流并以相同的方式发送,并且完全不需要将其存储到磁盘的整个过程。

我的肠子...写入磁盘是完全不正常的,应该实现使用流。(我错了吗?

使用内存流比从文件读取的好处

是的,最好避免将其写入磁盘,除非由于其他原因需要该步骤。 Attachment类可以将流和文件名作为其构造函数的参数,而不是为其提供物理文件路径。

http://msdn.microsoft.com/en-us/library/6sdktyws.aspx

当然; Attachment甚至有一个接受流和名称的构造函数,因此可以将文件写入磁盘完全删除。

虽然这绝对是可能的,但在进行更改之前请考虑两件事:1. 附件作为内存流存在的时间。2.如果不写入文件会更长,那么系统邮件吞吐量和由此产生的内存压力也会更长。