2012-11-30 37 views
3

可能重複:
Convert a Stream to a FileStream in C#鑄造流FILESTREAM

我的問題是關於流的FileStream的投...

基本上,我需要做的是讓該文件的名稱,因爲如果我只有一個對象流它沒有Name屬性,當FileStream時...

那麼如何正確地做到這一點,如何將Stream對象投射到FileStream ...?

另一個問題是,這個流來自webResponse.GetResponseStream(),如果我把它轉換到FileStream我得到它是空的。基本上我也可以使用流,但我需要獲取文件名。

我正在使用3.5

任何想法?

+1

閱讀:http://stackoverflow.com/questions/3769067/convert-a-stream-to-a-filestream-in-c-sharp – Mate

+1

你想要做什麼,如果流不*實際*一個'FileStream'? –

+0

如果使用.net 4.0,請使用Stream.CopyTo()。 Doc:http://msdn.microsoft.com/en-us/library/dd782932.aspx – Mate

回答

14

使用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 
} 
3

假設實際上流是文件流,下面應該做的伎倆:

var name = ((FileStream)stream).Name; 
2

選項1.如果你是肯定的,那Stream對象是FileStream

var fileStream = (FileStream)stream; 

選項2.如果你是而不是當然,那Stream對象是FileStream,但如果是的話,這將是有用的:

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

注意,即鑄造更具體的類型通常是一個信號,仔細看一下你的代碼,可能的話,要重構它。