可能的重复项:
在 C# 中将流转换为文件流
我的问题是关于将流投射到文件流...
基本上我需要这样做来获取文件的名称,因为如果我只有一个对象流,它没有 Name 属性,当文件流这样做时......
那么如何正确地做到这一点,如何将流对象转换为文件流...?
另一个问题是这个流来自webResponse.GetResponseStream(),如果我把它投射到FileStream,我会得到它空。基本上我也可以使用流,但我需要获取文件名。
我正在使用 3.5
有什么想法吗?
使用 as
运算符执行强制转换,如果Stream
实际上不是FileStream
,将返回null
而不是抛出异常。
Stream stream = ...;
FileStream fileStream = stream as FileStream;
if(fileStream != null)
{
//It was really a file stream, get your information here
}
else
{
//The stream was not a file stream, do whatever is required in that case
}
假设流实际上是一个文件流,以下内容应该可以解决问题:
var name = ((FileStream)stream).Name;
选项 1。如果您确定,Stream
对象是FileStream
:
var fileStream = (FileStream)stream;
选项 2.如果您不确定,Stream
对象是FileStream
,但如果是,它将很有用:
var fileStream = stream as FileStream;
if (fileStream != null)
{
// specific stuff here
}
请注意,强制转换为更具体的类型通常是仔细查看代码并可能重构代码的信号。