gpt4 book ai didi

silverlight - 检查文件是否被锁定或捕获尝试打开的错误

转载 作者:行者123 更新时间:2023-12-02 03:23:10 25 4
gpt4 key购买 nike

我正在尝试解决用户可以尝试使用 OpenFileDialog 打开由 Excel 打开的文件的问题。

使用简单的FileInfo.OpenRead(),它会抛出一个IOException,“该进程无法访问文件“cakes.xls”,因为它正在被另一个进程使用过程。”这可以很好地向用户显示,除非用户实际上会得到“调试资源字符串不可用”的废话。

似乎无法打开由另一个进程打开的文件,因为使用 FileInfo.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite) 会抛出 SecurityException,“不允许文件操作。拒绝访问路径 'C:\whatever\cakes.xls'。”,对于任何文件。相当无益。

因此,要么找到某种方法来检查文件是否被锁定,要么 try catch IOException。我不想捕获所有 IOExceptions 并假设它们都是锁定文件错误,因此我需要某种方法将此类异常分类为此错误......但是“调试资源” strings”的废话加上该消息本身可能是本地化的这一事实使得它变得棘手。我部分信任,因此无法使用 Marshal.GetHRForException

那么:是否有任何明智的方法可以检查文件是否被锁定,或者至少确定是否发生此问题而不只是捕获所有 IOException?

最佳答案

我刚刚解决了这个问题:就像阅读文档一样简单。

FileInfo.Open指定:

  • FileNotFoundException - 未找到文件。
  • UnauthorizedAccessException - 该文件是只读的或者是目录。
  • DirectoryNotFoundException - 指定的路径是无效,例如位于未映射的驱动器上。
  • IOException - 文件已打开。

因此,捕获所有 IOException 并将它们视为文件已打开问题是安全的,因为指定这是抛出 IOException 的唯一情况。

关于silverlight - 检查文件是否被锁定或捕获尝试打开的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11183067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com