当前位置:  开发笔记 > 运维 > 正文

将MemoryStream转换为FileStream会创建数百个相同的文件吗?

如何解决《将MemoryStream转换为FileStream会创建数百个相同的文件吗?》经验,为你挑选了1个好方法。

我正在访问一个httpwebrequest,它返回一个pdf文件作为响应.我正在将该响应读入内存流,然后转换为文件.问题是,是否正在创建数百个文件.不知道为什么,我尝试了很多方法,并且都做了同样的事情......这是第一个返回内存流的方法.

        MemoryStream memStream = new MemoryStream();
        byte[] buffer = new byte[2048];

        int bytesRead = 0;
        do
        {
            bytesRead = _ResponseStream.Read(buffer, 0, buffer.Length);
            memStream.Write(buffer, 0, bytesRead);
        } while (bytesRead != 0);

第二个转换为FileStream ...

            byte[] data = stream.ToArray();

            FileStream fs = new FileStream(newFile, FileMode.CreateNew);
            fs.Write(data, 0, data.Length);

有任何想法吗?

编辑添加更多代码......

    public MemoryStream GetToStream()
    {
        if (_Req == null)
            throw new Exception("HttpWebRequest is not initialised");

        GetResult(_Req);

        MemoryStream memStream = new MemoryStream();
        byte[] buffer = new byte[2048];

        int bytesRead = 0;
        do
        {
            bytesRead = _ResponseStream.Read(buffer, 0, buffer.Length);
            memStream.Write(buffer, 0, bytesRead);
        } while (bytesRead != 0);

        _ResponseStream.Close();

        if (memStream.Length > 0)
            return memStream;
        else return null;
    }

newFile是要创建的文件的服务器的映射路径.

            byte[] data = stream.ToArray();

            FileStream fs = new FileStream(newFile, FileMode.Create);
            fs.Write(data, 0, data.Length);
            fs.Close();

我尝试过stream.WriteTo(fs),同样的事情发生了.相当古怪.



1> Jon Skeet..:

你不明白为什么你会得到多个文件,但是你应该能够根据文件名得到一些信息 - 每个文件都对应一个值newFile.

顺便提一下,我注意到你没有关闭你的文件流.使用File.WriteAllBytes是实现目标的一种更简单的方法,并且不需要您关闭任何内容:

byte[] data = stream.ToArray();
File.WriteAllBytes(newFile, data);

另一种方法是仍然使用a FileStream(带using语句),但用于MemoryStream.WriteTo避免ToArray必须复制所有数据的调用:

using (FileStream fs = File.Create(newFile))
{
    stream.WriteTo(fs);
}

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有