从字节数组或流中获取文件名

问题描述 投票:21回答:4

可以从字节数组或流中获取文件名吗?我不想保存文件。我只想找回这个名字。

c# stream bytearray .net
4个回答
41
投票

如果Stream实际上是FileStream,那么可以通过投射到FileStream并访问.Name属性来获得:

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

但是,在一般情况下:不,这是不可用的。 byte[]当然没有文件名的概念,大多数其他类型的流也没有。同样,由其他流(压缩,加密,缓冲等)包装的FileStream基本流将不会暴露此类信息,尽管底层流(几层向下)是文件。

我会分别处理文件名。


14
投票

不,这是不可能的(好吧,所以它可能在FileStream课上,每天学习新东西!)。

字节数组或流表示文件的内容,而不是有关该文件的Windows元数据。

有很多直接的方法可以保留这些信息,但不了解您的情况我无法提供解决方案。


4
投票

所有文件信息(例如名称,扩展名等)都是实际文件的元数据的一部分。字节数组只保存实际数据。如果字节数组本身包含元数据(例如xml文件),则可能...但是,您需要知道类型以及具体的查找位置。


0
投票

您将无法从字节数组中获取文件名。相反,您需要filestream来获取文件的名称。字节数组不存储名称。

© www.soinside.com 2019 - 2024. All rights reserved.