首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iText7 - PdfReader构造函数锁定非pdf文件

iText7 - PdfReader构造函数锁定非pdf文件
EN

Stack Overflow用户
提问于 2021-05-27 23:14:29
回答 1查看 62关注 0票数 1

考虑以下C#代码:

代码语言:javascript
复制
try
{
    using (new PdfReader(filename))
    {
    }
}
catch
{
}
finally
{
    File.Delete(filename);
}

如果filename指向非pdf文件,PdfReader构造函数会抛出异常(不出所料),但也不会释放它内部创建的FileStream,尽管它是在using块中调用的。因此,尝试删除finally块中的文件时会引发异常The process cannot access the file '<filename>' because it is being used by another process.

事实上,如果构造函数抛出异常,它应该不会导致锁定任何资源。因此,即使在没有using块的情况下调用PdfReader构造函数,上面的代码也应该删除非pdf文件。

显而易见的解决方法是实例化PdfReader,如下所示:

代码语言:javascript
复制
using (var fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read))
using (new PdfReader(fileStream))
{
}

它确实可以工作,但是使用filename参数的PdfReader构造函数重载的当前行为是不被期望的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-01 19:38:28

这确实是iText的一个bug,但这是一个已知的问题,并且已经在最新的开发版本中得到了修复。iText 7.1.16版本将包含此修复,但如果您现在需要此修复,您可以使用artifactory https://repo.itextsupport.com/webapp/#/artifacts/browse/tree/General/snapshot中的快照版本

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

https://stackoverflow.com/questions/67725102

复制
相关文章

相似问题

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