2012-01-05 18 views

答えて

31

Streamが実際FileStreamである場合、このFileStreamにキャストし、.Nameプロパティにアクセスすることで利用できることがあります、しかし

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

一般的なケースで:いいえ、これではありません利用可能です。 A byte[]確かににはファイル名の概念がなく、他のほとんどの種類のストリームもありません。同様に、他のストリーム(圧縮、暗号化、バッファリングなど)でラップされているFileStreamのベースストリームは、基本ストリーム(いくつかのレイヤーがダウン)がファイルであるにもかかわらず、そのような情報を公開しません。

私はファイル名を別々に扱います。

+0

+1私はそれを使用する可能性は低いですが、前にそのプロパティを見たことがない –

+0

こんにちは@Marc、あなたの優れた説明に感謝します。私は結果を投稿しようとします。 – Gus

+0

こんにちは、wcfで私はFileStreamを返しますが、クライアントはMessageBodyStreamを取得します。助言がありますか? – Gus

14

いいえ(FileStreamクラスでは可能ですので、毎日新しいことを学ぶことができます)。

バイト配列またはストリームは、ファイルに関するコンテンツファイルの、ないWindowsのメタデータを表します。

この情報を保持する方法はたくさんありますが、私は解決策を提示できません。

+0

こんにちは@アダム、私は理解しています。あなたの助けてくれてありがとう。 – Gus

4

すべてのファイル情報(名前、拡張子など)は、実際のファイルのメタデータの一部です。バイト配列は実際のデータを保持します。バイト配列自体にメタデータ(例xmlファイル)が格納されている可能性がありますが、その型と具体的な場所を知る必要があります。

+0

こんにちは@コード、あなたの助けをありがとう。 – Gus

関連する問題