8

可能重复:
在 C# 中将 Stream 转换为 FileStream

我的问题是关于流到 FileStream 的演员...

基本上我需要这样做来获取文件的名称,因为如果我只有一个对象 Stream 它没有 Name 属性,当 FileStream 有...

那么如何正确地做到这一点,如何将 Stream 对象转换为 FileStream ...?

另一个问题是这个流来自 webResponse.GetResponseStream() ,如果我将它转换为 FileStream 我会把它弄空。基本上我也可以使用流,但我需要获取文件名。

我正在使用 3.5

有任何想法吗?

4

3 回答 3

23

使用as运算符执行强制转换,如果Stream实际不是 a FileStreamnull将返回而不是抛出异常。

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
}
于 2012-11-30T07:32:22.553 回答
4

假设流实际上是文件流,以下应该可以解决问题:

var name = ((FileStream)stream).Name;
于 2012-11-30T07:32:33.363 回答
2

选项 1。如果您确定,该Stream对象是FileStream

var fileStream = (FileStream)stream;

选项 2。如果您不确定,该Stream对象是 a FileStream,但如果是,它将很有用:

var fileStream = stream as FileStream;
if (fileStream != null)
{
    // specific stuff here
}

请注意,转换为更具体的类型通常是仔细查看代码并可能重构代码的信号。

于 2012-11-30T07:33:37.810 回答