2012-01-05 38 views

回答

31

如果Stream實際上是FileStream,那麼這可以通過強制轉換爲FileStream和訪問.Name財產是沒有可用的,這是不是可用。 A byte[]當然沒有文件名的概念,也沒有大多數其他類型的流。同樣,一個被其他流(壓縮,加密,緩衝等)封裝的FileStream基本流不會公開這些信息,儘管基礎流(幾層下來)是一個文件。

我會分開處理文件名。

+0

+1以前從未發現過這個屬性,雖然我不太可能使用它lol – 2012-01-05 11:51:40

+0

嗨@Marc,謝謝你的出色解釋。我會嘗試發佈結果。 – Gus 2012-01-05 12:10:52

+0

嗨,在wcf我返回一個FileStream,但客戶端我得到一個MessageBodyStream。有什麼建議麼? – Gus 2012-01-05 12:50:10

14

不,這是不可能的(好吧,所以在FileStream上可能會有這種情況,每天學點新東西!)。

的字節數組或流表示內容的文件,而不是Windows 元數據關於文件。

有很多直接的方法來保留這些信息,但不知道更多關於您的情況我無法提供解決方案。

+0

嗨@亞當,我明白了。謝謝你的幫手。 – Gus 2012-01-05 11:55:40

4

所有文件信息(如名稱,擴展名等)都是實際文件的元數據的一部分。字節數組只會保存實際的數據。如果字節數組本身擁有元數據(例如一個xml文件),那麼這可能是可能的......但是,您需要知道類型,特別是在哪裏查找。

Stream stream = ... 
FileStream fs = stream as FileStream; 
if(fs != null) Console.WriteLine(fs.Name); 

然而,在一般情況下

+0

嗨@Code,謝謝你的幫手。 – Gus 2012-01-05 12:11:49