我的問題是關於流的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