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

时间:2012-01-05 11:46:37

标签: c# stream bytearray .net

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

4 个答案:

答案 0 :(得分:41)

如果Stream实际上是FileStream,则可以通过强制转换为FileStream并访问.Name属性来获取此:< / p>

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

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

我会单独处理文件名。

答案 1 :(得分:14)

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

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

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

答案 2 :(得分:4)

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

答案 3 :(得分:0)

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