我的问题是关于流的FileStream的投...
基本上,我需要做的是让该文件的名称,因为如果我只有一个对象流它没有Name属性,当FileStream时...
那么如何正确地做到这一点,如何将Stream对象投射到FileStream ...?
另一个问题是,这个流来自webResponse.GetResponseStream(),如果我把它转换到FileStream我得到它是空的。基本上我也可以使用流,但我需要获取文件名。
我正在使用3.5
任何想法?
我的问题是关于流的FileStream的投...
基本上,我需要做的是让该文件的名称,因为如果我只有一个对象流它没有Name属性,当FileStream时...
那么如何正确地做到这一点,如何将Stream对象投射到FileStream ...?
另一个问题是,这个流来自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
}
注意,即铸造更具体的类型通常是一个信号,仔细看一下你的代码,可能的话,要重构它。
阅读:http://stackoverflow.com/questions/3769067/convert-a-stream-to-a-filestream-in-c-sharp – Mate
你想要做什么,如果流不*实际*一个'FileStream'? –
如果使用.net 4.0,请使用Stream.CopyTo()。 Doc:http://msdn.microsoft.com/en-us/library/dd782932.aspx – Mate