如何在 C# 中打开文件之前检测损坏的文件
本文关键字:文件 损坏 检测 | 更新日期: 2024-11-06 08:23:56
我有一些文件已损坏,我想在打开之前检测哪个文件已损坏。我用了FileInfor类,但没用。
解决此问题的最简单方法是让程序具有访问和编辑文件时的日志文件。通过跟踪这一点,如果程序过早退出,您可以轻松识别保存被中断。为此,您应该让程序在每次完成保存文件时添加新日志,而不是在保存文件之前。当程序尝试打开程序时,您可以检查上次编辑文件的时间,如果上次编辑时间晚于日志文件中记录的时间,则拒绝它。
当然,该系统只能在一台计算机上运行。还有其他方法可以实现这一点,例如在文件末尾有一个日志。如果日志不存在,则表明该文件已损坏。敞开心扉接受更多的想法,并尝试想出更多方法来解决这个问题。这只是一个例子。
1.不幸的是,在渲染文件之前,没有简单的方法可以确定文件是否已损坏。通常问题文件具有正确的标头,因此损坏的真正原因是不同的。该文件包含一个引用表,从文件开头给出每个对象的确切字节偏移位置。因此,很可能损坏的文件已损坏偏移量或可能缺少某些对象。
确定文件已损坏的最佳方法是使用该类型的专用库,如 PDF 文件库。有很多免费的和商业的 .NET 库。您可以简单地尝试使用其中一个库加载文件。 iTextSharp
将是一个不错的选择。
2.或者,如果您愿意,可以通过此答案:文件上传病毒扫描(服务器端)
您可能需要解析文件的标头字节,并确保它满足其余的文件正文内容。 例如,
在不加载整个图像的情况下读取图像标题信息这是您可以在不打开图像的情况下读取图像标题并获取图像大小的方法。以同样的方式,您应该查看所需的文件格式标头并根据文件格式规则对其进行验证。这不是现成的解决方案,但可能会给您一个想法。