gpt4 book ai didi

C# 将 MemoryStream 转换为 FileStream

转载 作者:太空狗 更新时间:2023-10-29 20:46:11 25 4
gpt4 key购买 nike

我的代码是这样的:

byte[] byteArray = Encoding.ASCII.GetBytes(someText);
MemoryStream stream = new MemoryStream(byteArray);
StreamReader reader = new StreamReader(stream);
FileStream file = (FileStream)reader.BaseStream;

稍后我使用 file.Name。

我得到一个 InvalidCastException:它显示如下

Unable to cast object of type 'System.IO.MemoryStream' to type 'System.IO.FileStream'.

我在某处读到我应该将 FileStream 更改为 Stream。还有什么我应该做的吗?

最佳答案

MemoryStream 不与文件关联,也没有文件名的概念。基本上,您不能那样做。

你当然不能在它们之间施法;您只能向上或向下 throw - 不能向侧面 throw ;可视化:

        Stream
|
---------------
| |
FileStream MemoryStream

你可以简单地将 MemoryStream 转换为 Stream,通过类型将 Stream 转换为 MemoryStream -查看;但绝不是 FileStreamMemoryStream。这就像说狗是动物,大象是动物,所以我们可以把狗投给大象。

可以MemoryStream 子类化并添加一个 Name 属性(您为其提供一个值),但是它们之间仍然没有共同点一个 FileStream 和一个 YourCustomMemoryStream,并且 FileStream 没有实现一个预先存在的接口(interface)来获取一个 Name;因此调用者必须显式分别处理两者,或使用鸭子类型(可能通过动态或反射)。

另一种选择(可能更简单)可能是:将数据写入临时文件;从那里使用 FileStream;然后(稍后)删除该文件。

关于C# 将 MemoryStream 转换为 FileStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8297613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com