确定给定 FileStream 的文件扩展名

Posted

技术标签:

【中文标题】确定给定 FileStream 的文件扩展名【英文标题】:Determining file extension given a FileStream 【发布时间】:2012-02-13 10:17:21 【问题描述】:

有什么方法可以知道FileStream 的类型。我有一个接受FileStream 对象的函数,我想根据FileStream 确定文件扩展名。

【问题讨论】:

【参考方案1】:

如果流确实是FileStream,那么您应该能够执行以下操作

var ext = Path.GetExtension(fileStream.Name);

如果它是一个普通的旧Stream,那么通常不可能获得扩展名,因为可以为任何字节流创建Stream。它不必有支持文件。

更新

正如Chris 在 cmets 中指出的,还有另一个与此讨论相关的 SO 问题。它正在讨论确定byte[] 类型的启发式方法,然后可以将其映射到可能 原始签名。

In C#, how can I know the file type from a byte[]?

这绝不是万无一失的,但可能对您有所帮助。

【讨论】:

【参考方案2】:

是的,使用以下文件名将返回.txt(包括.):

var path = myFileStream.Name;
return Path.GetExtension(path);

【讨论】:

【参考方案3】:
 string extension = Path.GetExtension(myFileStream.Name);

【讨论】:

以上是关于确定给定 FileStream 的文件扩展名的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 使用 FileStream (FileMode.Open) 读取 xml -> System.UnauthorizedAccessException

获取给定文件的文件类型 - 基于内容

旧光泽的 GKE 集群自动扩缩器配置文件

使用FileStream对象读写文件

同一段代码,扩展名为cpp就可以成功编译,扩展为c就不能编译,求解答

FileStream读写文件StreamWriter 和 StreamReader