web-dev-qa-db-ja.com

バイト配列またはストリームからファイル名を取得します

バイト配列またはストリームからファイル名を取得できますか?ファイルを保存したくない。名前を取得したいだけです。

24
Gus

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

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

ただし、一般的な場合:いいえ、これは使用できません。 byte[]確かににはファイル名の概念がなく、他のほとんどのタイプのストリームもありません。同様に、他のストリーム(圧縮、暗号化、バッファリングなど)によってラップされているFileStreamベースストリームは、基になるストリーム(数層下)がファイルであっても、そのような情報を公開しません。

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

44
Marc Gravell

いいえ、これは不可能です(承知したので、FileStreamクラスで可能かもしれません。毎日何か新しいことを学んでください!)。

バイト配列またはストリームは、Windowsではなく、ファイルのcontentを表しますmetadataファイルについて。

この情報を保持する多くの単純な方法がありますが、あなたの状況についてこれ以上知らないので、私は解決策を提供できません。

14

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

4

バイト配列からファイル名を取得することはできません。代わりに、ファイルストリームの名前を取得する必要があります。バイト配列は名前を格納しません。

0