使用流创建文本文件但不写入磁盘

时间:2017-03-02 00:10:00

标签: c# stream

如何在内存中创建一个html文件给定一些文本,然后命名文件,创建其内容类型然后将其放入流而不写入设备,我只需要流。

我将内容作为/发送到网络服务。

我可以使用这样的东西,但我不想实际拥有一个物理文件,而只是流,以便我可以转换为它的字节表示并发送它,我也没有路径..只是没有确定如何解决这个问题

byte[]

我希望流知道文件名为using (FileStream fs = File.Create(path)) { Byte[] info = new UTF8Encoding(true) .GetBytes("<html><p>Some test to save in mycontent.html</p></html>"); fs.Write(info, 0, info.Length); //i do not want to generate the file } ,内容类型为mycontent.html,内容为流格式或text/html

3 个答案:

答案 0 :(得分:3)

请勿使用FileStream,而应使用MemoryStream。例如:

using (var ms = new MemoryStream())
{
    Byte[] info = new UTF8Encoding(true).GetBytes("<html><p>Some test to save in mycontent.html</p></html>");
    ms.Write(info, 0, info.Length); 

    ms.Position = 0;

    //Do something with your stream here
}

请注意,没有流“知道”文件名将是什么。您将该元数据设置为用于将其发送到客户端的过程的一部分。

答案 1 :(得分:1)

只需使用MemoryStream

using (MemoryStream mem = new MemoryStream())
{
        // Write to stream
        mem.Write(...); 

        // Go back to beginning of stream
        mem.Position = 0;

        // Use stream to send data to Web Service
}

答案 2 :(得分:-1)

一旦离开使用区块的范围,流就会关闭并处理掉。 Close()调用Flush()。 Flush()正是您想要避免的。

尝试覆盖Flush(),以便在调用时不执行任何操作。

public class MyStream : FileStream 
{
    public override void Flush()
    {
        //Do nothing
        reutrn;
    }
}