首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C#中打开文件之前检测损坏的文件

问如何在C#中打开文件之前检测损坏的文件
EN

Stack Overflow用户
提问于 2015-03-10 05:41:19
回答 3查看 9K关注 0票数 3

我有一些文件已经损坏,我想检测哪个文件已损坏,然后打开它。我用的是FileInfor课程,但没用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-10 05:59:35

1.不幸的是,在呈现文件之前,没有一种简单的方法可以确定文件是否损坏。通常,问题文件有一个正确的头,所以真正的原因是不同的腐败。该文件包含一个引用表,从文件开始时给出每个对象的确切字节偏移位置。因此,很可能损坏的文件已经断开偏移量,或者可能丢失了一些对象。

确定文件是否已损坏的最佳方法是使用该类型的专用库,如PDF文件库。对于.NET来说,这类库有很多免费的和商业化的,您可以尝试用这样的库之一加载文件。iTextSharp将是一个不错的选择。

2.或者如果您愿意的话,您可以浏览以下答案:文件上传病毒扫描(服务器端)

票数 1
EN

Stack Overflow用户

发布于 2015-03-10 05:48:00

解决此问题的最简单方法是让您的程序在访问和编辑文件时有一个日志文件。通过跟踪这一点,如果程序过早退出,您可以很容易地识别保存被中断。要做到这一点,您应该让程序添加一个新的日志每次程序完成保存一个文件,而不是在它被保存之前。当程序尝试打开程序时,可以检查文件上次编辑的时间,如果上次编辑的时间晚于日志文件中记录的时间,则拒绝它。

当然,这个系统只能在一台计算机上工作。还有其他实现这一点的方法,例如在文件末尾有一个日志。如果日志不存在,那么您就知道该文件已损坏。对更多的想法敞开心扉,试着想出更多的方法来解决这个问题。这只是一个例子。

票数 2
EN

Stack Overflow用户

发布于 2015-03-10 06:36:35

您可能需要解析文件的头字节,并确保它满足文件正文内容的其余部分。例如,

读取图像标题信息而不加载整个图像 --这是您可以读取图像的标题并在不打开图像的情况下获取图像大小的方法。同样,您应该查看所需的文件格式头,并按照文件格式规则验证它。这不是现成的解决方案,但可能会给你一个想法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28956867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档