c# 检查文件是否打开

2023-12-26

我需要验证特定文件是否打开以防止复制该文件。

我尝试了很多例子,但没有一个起作用!例如,我尝试这样做:

protected virtual bool IsFileLocked(FileInfo file)
{
    FileStream stream = null;

    try
    {
        stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
    }
    catch (IOException)
    {
        //the file is unavailable because it is:
        //still being written to
        //or being processed by another thread
        //or does not exist (has already been processed)
        return true;
    }
    finally
    {
        if (stream != null)
            stream.Close();
    }

    //file is not locked
    return false;
}

我需要方向……我哪里失败了?建议?


如果你想知道是否你的申请已经打开文件,您应该保存FileStream在一个字段中,并将该字段重置为null当你关闭流时。然后你可以简单地测试并得到FileStream文件的。

如果你想知道是否另一个应用程序文件已经打开,那么您无能为力。当您尝试打开文件时可能会遇到异常。但即使你知道,你也做不到防止复制该文件,因为您没有对该文件或其内容的引用FileStream在您的应用程序中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c# 检查文件是否打开 的相关文章

随机推荐

  • XD 代理 Facebook

    我正在使用 facebook connect 登录我的网站 在我的 html 页面中我编写代码 div div
  • Jenkins 和 Artifactory 的 Nuget 登录错误

    遇到问题Nuget Jenkins and 人工工厂 似乎无法获取Jenkins管道来识别Nuget配置 什么在起作用 使用我正在尝试阅读的帐户登录神器 查看我尝试访问的存储库和工件 使用 nuget 命令行访问存储库并在出现提示时输入用户
  • 返回新的 LINQ 对象

    我想编写 LINQ 它返回新对象 string int 包含 字符串 位置名称 int 位置计数 Output PositionA 8 PostionB 12 PostionC 13 这是我到目前为止所拥有的 public List
  • Android Studio 2022.2.1:网络检查器数据不可用

    我正在使用最新最好的 Android Studio 版本 Android Studio Flamingo 2022 2 1 Build AI 222 4459 24 2221 9862592 built on March 31 2023 R
  • 按索引合并两个数据帧

    我有以下数据框 gt df1 id begin conditional confidence discoveryTechnique 0 278 56 false 0 0 1 1 421 18 false 0 0 1 gt df2 conce
  • 如何在 webView 中启用 javascript

    在android中 如果我在webView中使用javascript 它会强制关闭 是否有可能在 webView 中使用 java 脚本 请帮忙 01 10 10 08 51 513 W dalvikvm 5994 JNI WARNING
  • 连续 WebJobs 和 CancellationToken

    我不明白取消令牌和网络作业背后的机制 我知道我可以使用Microsoft Azure WebJobs WebJobsShutdownWatcher Token获取令牌并做出反应token IsCancellationRequested例如
  • 获取C# WinForms App的应用程序图标

    我已使用 项目属性 选项卡为 C WinForms 应用程序分配了一个图标 该图标在构建时与程序清单一起提供 有没有办法获得System Drawing Icon在运行时获取此图标的对象 而无需再次将其嵌入资源中 我已经做了我的研究 有一种
  • Laravel Echo Server、Redis、Socket.IO:似乎无法使它们工作

    我正在使用 Laravel 开发实时应用程序 由于我不想使用 Pusher 所以我尝试使用 websockets 来工作Laravel 回声服务器 https github com tlaverdure laravel echo serve
  • firebase规则:如何根据用户角色限制访问

    我是 Firebase 新手 正在尝试了解安全规则 为此 我正在实现项目 团队成员 任务的典型功能 每个项目都会有一个团队负责人 多个成员和多个任务 这是我试图实现的结构和规则 也称为要求 Members each member has d
  • Rcpp 函数比 Rf_eval 慢

    我一直在开发一个包 它使用 Rcpp 在一组大型医学成像文件上应用任意 R 代码 我注意到我的 Rcpp 实现比原始的纯 C 版本慢得多 我追踪了通过 Function 调用函数与原始 Rf eval 的区别 我的问题是为什么性能会下降近
  • Python 中的成对集交集

    如果我有可变数量的集合 让我们称这个数字为n 最多有m每个元素 计算所有集合对的成对交集的最有效方法是什么 请注意 这与所有的交集不同n sets 例如 如果我有以下集合 A a b c B c d e C a c e 我希望能够找到 in
  • 在 Go 中执行 CMD 的 'cd' 命令

    我想使用 Go 和 exec 库转到某个路径 c 然后运行 exe 文件 当我运行 Go 代码时 它会给出 exec cd 文件不存在 The cdcommand 是 shell 的内置命令 无论是 bash cmd exe PowerSh
  • 如何在 JavaScript 中创建内存泄漏并监控内存使用情况

    我正在尝试使用下面的代码片段在 JavaScript 中分配内存来研究内存泄漏 消耗 然而 performance memory usedJSHeapSize 总是显示相同的数字 在我的例子中是 10000000 尽管动态创建元素并附加到
  • 有没有办法在调用诺基亚反向地理编码 API 时关联响应和查询?

    我在用着反向地理管理者的方法诺基亚 places 搜索 manager HERE API 检索有关坐标的信息 在我的情况下 当显示一点信息时 它工作得很好 但是 当我有多个点时 我的所有点都会获取最后一个点的信息 事实上 我不使用 info
  • codeigniter 3,文件上传给出 HTTP ERROR 500

    我是 CodeIgniter 3 框架的新手 所以我对这个错误有点了解 基本上 当我尝试上传图像时 它会抛出 HTTP ERROR 500 并且服务器上的错误日志中没有错误 这是控制器的功能 if POST config upload pa
  • 查全率与查准率图

    我正在尝试绘制精确度与召回率的图表 这是我的分类报告 我不知道如何绘制显示这些的图表 这是我的分类报告代码 from sklearn metrics import classification report print print Conf
  • Smalltalk 如何操作调用堆栈帧(thisContext)?

    Smalltalk 对象thisContext看起来奇怪又奇妙 我不明白它是什么以及它是如何工作的 甚至它如何实现延续 对于 C 的调用堆栈 我可以轻松想象它是如何实现和工作的 但对于这个 我不能 请帮助我理解它 我认为这不是一个简单的问题
  • GDB 中的 x86 标签和 LEA

    我正在学习用 x86 汇编 目前为 32 位 进行编码 并且正在努力完全理解内存模型 特别令人困惑的是标签的语义 LEA 指令以及可执行文件的布局 我编写了这个示例程序 以便我可以检查它在 gdb 中的运行情况 mem s SECTION
  • c# 检查文件是否打开

    我需要验证特定文件是否打开以防止复制该文件 我尝试了很多例子 但没有一个起作用 例如 我尝试这样做 protected virtual bool IsFileLocked FileInfo file FileStream stream nu