繁体   English   中英

检测文件扩展名c#

[英]Detect file extension c#

我的兄弟在他的计算机中有一种病毒,病毒的作用是重命名他计算机中的几乎所有文件。 它也改变了文件扩展名。 所以一个可能被命名为picture.jpg的文件被重命名为kjfks.doc。

所以我为解决这个问题所做的是:

从文件中删除所有文件扩展名。 (我使用递归方法搜索目录中的所有文件,当我浏览文件时,我删除了扩展名)

现在这些文件没有扩展名。 文件现在看起来像:

在此输入图像描述

我认为这个文件名存储在由病毒创建的本地数据库中,如果我购买反病毒,它们将被重命名为原始名称。

因为我的兄弟创建了一个备份,所以我选择了创建日期比我哥哥执行备份的文件。 所以我把这些文件放在一个目录中。

只要我能看到文件的内容,我就不会对获得正确的扩展感兴趣。 例如,我将扫描每个文件,如果它有文本,我知道它将具有.txt扩展名。 也许它是.html或.css扩展我不知道我知道。

我相信所有的pdf文件应该有一些共同之处。 或doc文件也应该有一些共同点。 我如何计算最常见的类型(pdf,doc,docx,png,jpg等)文件的共同点?

编辑:

我知道可能需要更少的时间来浏览所有这200个文件并测试每个文件而不是创建这个程序。 只是我很好奇,看看是否有可能获得文件扩展名。

在unix中,您可以使用file来确定file的类型。 还有一个Windows端口 ,您可以显然编写脚本(批处理,powershell等)或C#程序来自动执行此操作。

首先,祝贺你的兄弟做了备份。 许多人没有,并且完全被这些问题所消灭。

我担心,你将不得不做很多研究,但你走的正确。

使用TextReader或BinaryReader打开每个文件并检查标题。 其中大多数是可检测的。

例如:每个PDF都以“%PDF-”开头,然后是版本号。 只需看看前5个字符。 如果是“%PDF-”,则在文件名上放置PDF并继续。

类似地:JPEG的“ÿØÿà..JFIF”,URL快捷方式的“[InternetShortcut]”,常规快捷方式的“L ............ ......Fƒ”(“。”是零/ null,BTW)

ZIP /压缩目录以{0x50} {0x4B] {0x03} {0x04} {0x14}开头,您应该知道Office 2007/2010文档实际上是包含XML文件的ZIP文件。

当您找到每种类型时,您将不得不进行一些挖掘,但您应该能够编写一些东西来建立大多数文件类型。

您必须编写一些递归来处理目录,但是您可以删除任何没有扩展名的文件。

BTW - 一个很好的工具来帮助解决这个问题是HxD: http ://www.mh-nexus.de/这就是我以前把这个答案拉到一起的原因!

祝好运!

“最常见的类型”每个都有自己的格式,大多数都在文件开头附近的固定位置有一些魔术字节。 您可以非常轻松地检测大多数格式。 甚至HTML,XML,.CSS和类似的文本文件也可以通过分析它们的开头来检测。 但是编写一个猜测格式的应用程序需要一些时间。 对于某些类型(例如ODF格式或JAR格式,它们构建在常规ZIP之上),您还可以检测此格式。

但是......可以在市场上存在这样的应用吗? 我猜你可以找到一些东西,如果你搜索,导致任务不像最初看起来那么棘手。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM