File.Copy 之后文件正被另一个进程使用

2024-03-26

我正在尝试管理我的网络应用程序中的文件。有时,我必须在文件夹中创建一个文件(使用 File.Copy):

File.Copy(@oldPath, @newPath);

几秒钟后该文件可能会被删除:

if (File.Exists(@newPath)) {
  File.Delete(@newPath);            
}

但是,我不知道为什么在 File.Copy 之后新文件仍然被服务器进程(IIS、w3wp.exe)阻止。在 File.Delete 之后我得到异常:

“该进程无法访问该文件,因为该文件正在被使用 另一个过程。”

根据 Api,File.Copy 不会阻止文件,不是吗?

我尝试过释放资源,但没有成功。我该如何解决这个问题?

UPDATED:事实上,使用 Process Explorer 该文件被 IIS 进程阻止。我尝试实现复制代码以手动释放资源,但问题仍然存在:

  public void copy(String oldPath, String newPath)
  {
    FileStream input = null;
    FileStream output = null;
    try
    {
      input = new FileStream(oldPath, FileMode.Open);
      output = new FileStream(newPath, FileMode.Create, FileAccess.ReadWrite);

      byte[] buffer = new byte[32768];
      int read;
      while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
      {
        output.Write(buffer, 0, read);
      }
    }
    catch (Exception e)
    {
    }
    finally
    {
      input.Close();
      input.Dispose();
      output.Close();
      output.Dispose();
    }
  }

你可以试试流程浏览器 http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx查找哪个应用程序打开了文件句柄。 如果 Process Explorer 找不到它,请使用过程监控器 http://technet.microsoft.com/en-us/sysinternals/bb896645跟踪哪个进程正在尝试访问该文件。

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

File.Copy 之后文件正被另一个进程使用 的相关文章

  • 在 Java 中如何找出哪个对象打开了文件?

    我需要找出答案哪个对象在我的 Java 应用程序中打开了一个文件 这是为了调试 因此欢迎使用工具或实用程序 如果发现哪个对象太具体了 这class也会很有帮助 这可能很棘手 您可以从使用分析器开始 例如VisualVM http visua
  • 通过 SocketCAN 进行 boost::asio

    我正在考虑利用升压阿西奥 http www boost org doc libs 1 49 0 doc html boost asio html从a读取数据套接字CAN http en wikipedia org wiki SocketCA
  • 我如何理解这个 C 类型声明?

    double bar int double double double double 在查看讲座幻灯片时 我发现了留给学生的练习 用简单的英语来说 什么是类型bar在这个 C 声明中 Please帮助我解决这个问题 我什至不知道从哪里开始
  • FileStream 构造函数和默认缓冲区大小

    我们有一个使用 NET 4 用 C 编写的日志记录类 我想添加一个构造函数参数 该参数可以选择设置文件选项 WriteThrough http msdn microsoft com en us library system io fileo
  • 使用 Enumerable.OfType() 或 LINQ 查找特定类型的所有子控件

    Existed MyControl1 Controls OfType
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • ASP.Net Core 内容配置附件/内联

    我正在从 WebAPI 控制器返回一个文件 Content Disposition 标头值自动设置为 附件 例如 处置 附件 文件名 30956 pdf 文件名 UTF 8 30956 pdf 当它设置为附件时 浏览器将要求保存文件而不是打
  • fprintf() 线程安全吗?

    我正在为野人就餐问题的某些变量编写一个 C 解决方案 现在 我创建线程 每个线程都将 FILE 获取到同一个调试文件 在线程内我正在使用 fprintf 进行一些打印 打印的语句不受任何类型的互斥锁等保护 我没有在调试文件中观察到任何交错行
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • 在 JSQMessagesViewController 中显示 LocationMediaItem

    我刚刚尝试实施LocationMediaItem in my Xamarin iOS应用程序使用JSQMessagesViewController 一切都很顺利 唯一的问题是UICollectionView应该显示位置的单元格永远停留在加载
  • Visual Studio Code:如何配置 includePath 以获得更好的 IntelliSense 结果

    我是使用 Visual Studio Code 的完全初学者 我不知道我在做什么 我已经四处搜索 也许还不够 但我找不到像我这样的人如何配置的简单解释c cpp properties json每当我单击带有绿色波浪线下划线的行旁边的黄色灯泡
  • 如何从文本文件读取整数到数组

    这就是我想做的 我对此有些不满 但我希望你能容忍我 这对我来说是一个非常新的概念 1 在我的程序中 我希望创建一个包含 50 个整数的数组来保存来自文件的数据 我的程序必须获取用户的文档文件夹的路径 2 文件的名称为 grades txt
  • 如何在服务器端按钮点击时关闭当前标签页?

    我尝试在确认后关闭当前选项卡 因此我将以下代码放在确认按钮的末尾 但选项卡没有关闭 string jScript ClientScript RegisterClientScriptBlock this GetType keyClientBl
  • 检查 RoutedEvent 是否有任何处理程序

    我有一个自定义 Button 类 当单击它时 打开特定窗口 它总是执行相同的操作 我添加了一个可以在按钮的 XAML 中分配的 Click 事件 就像常规按钮一样 当它被单击时 我想执行 Click 事件处理程序 如果已分配 否则我想执行默
  • 将标量添加到特征矩阵(向量)

    我刚刚开始使用 Eigen 库 无法理解如何向所有矩阵成员添加标量值 假设我有一个矩阵 Eigen Matrix3Xf mtx Eigen Matrix3Xf Ones 3 4 mtx mtx 1 main cxx 104 13 error
  • C# 中的 strstr() 等效项

    我有两个byte 我想找到第二个的第一次出现byte 在第一个byte 或其中的一个范围 我不想使用字符串来提高效率 翻译第一个byte to a string会效率低下 基本上我相信就是这样strstr 在 C 中做 最好的方法是什么 这
  • 新任务中使用的依赖注入服务

    我在需要时使用依赖项注入来访问我的服务 但我现在想要创建一个并发任务 但这会由于依赖项注入对象及其生命周期而导致问题 我读过这篇文章 标题 防止多线程 Link http mehdi me ambient dbcontext in ef6
  • 在简单注入器中解析具有自定义参数的类

    我正在使用以下命令创建 WPF MVVM 应用程序简易注射器作为 DI 容器 现在 当我尝试从简单注入器解析视图时遇到一些问题 因为我需要在构造时将参数传递到构造函数中 而不是在将视图注册到容器时 因此这不是适用的 简单注入器将值传递到构造
  • C++0x中disable_if在哪里?

    Boost 两者都有enable if and disable if 但 C 0x 似乎缺少后者 为什么它被排除在外 C 0x 中是否有元编程工具允许我构建disable if按照enable if 哦 我刚刚注意到std enable i

随机推荐

  • 如何测试事件是否包含事件处理程序?

    我想测试那个班级A s RegisterEventHandlers 方法将其方法之一注册为EventHandler课堂活动B 我怎样才能做到这一点 我正在使用最小起订量 如果这很重要的话 我认为没有办法从类外部检查事件处理程序委托 如果我错
  • 在文本区域上启用垂直滚动

    我有一个文本区域 我想启用垂直滚动 当我超过文本区域的高度时 它的大小会增加 滚动条不出现 我希望出现一个垂直滚动条 并且用户也无法调整文本区域的大小 我在网上搜索并尝试发布的解决方案 但似乎没有一个有效 Demo http jsfiddl
  • Scala 中使用 TypeTag 和 ClassTag 的多态实例化

    在 Scala 2 9 中 可以将多态实例化实现为 def newInstance T implicit m Manifest T m erasure newInstance asInstanceOf T 但从2 10开始Manifest正
  • 无需硬件支持的虚拟内存

    在读的时候this https stackoverflow com questions 11809162问题及其答案我忍不住想为什么硬件必须支持虚拟内存 例如 我不能仅用软件模拟这种行为 例如 操作系统将所有内存表示为某个表 拦截所有与内存
  • 使用托管服务身份支持代表流程

    在 Azure 和应用服务中运行的应用程序的一个非常常见的流程是代表流程 其中应用程序可以交换传入的访问令牌及其 ClientId ClientSecret 以作为用户访问另一个资源 查看 MSI API 上当前有限的文档 我只看到获取访问
  • Spring MVC 更新后不会显示正确的数据库值

    在我的控制器中 输入一个值MySQL数据库成ModelAndView object 有一个单独的程序可以更新表和MVC应该获取该值 因此没有表单可以更新该表 当 的时候表已更新 当我在浏览器上点击刷新 值不会在页面上更新 控制器 Suppr
  • 如何在 travis 上启动和停止后台任务?

    我需要在 travis 上启动并重新启动自定义 Web 服务器 使用子 shell 在后台启动就可以了 travis yml if TEST ADAPTER HTTP then vendor bin httpd php start fi 为
  • Phoenix框架中如何处理关联和嵌套表单?

    Phoenix框架中如何处理关联和嵌套表单 如何创建具有嵌套属性的表单 在控制器和模型中如何处理它 有一个处理 1 1 情况的简单示例 想象一下我们有一个Car and an Engine模型和显然Car有一个Engine 所以有汽车型号的
  • 简单的随机英语句子生成器[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个简单的随机英语句子生成器 我需要用我自己的单词填充它 但它需要能够制作至少遵循英语规则的较长句
  • 警告:“将‘D’的乘法及其转置括起来,以确保结果是埃尔米特式的。”

    正如您在上面的屏幕截图中看到的 我的 Matlab m 文件代码中有以下表达式 K P D D P 其中 P 是一个 nxn 矩阵 D 是一个 nx1 列向量 n 4 如果重要的话 为什么我会收到此警告消息 如果我在那里使用或不使用括号会发
  • SCTP 与多宿主作为 TCP 的直接替代品

    SCTP具有本机多宿主支持 如果我理解正确的话 如果主接口出现故障 它将自动通过辅助 NIC 重新路由您的数据包 我通过编写一个自定义路由守护程序来使用 TCP 复制此功能 以便在我的主 NIC 出现故障时修改路由表 我想尝试使用SCTP反
  • 如何隐藏 toast 消息“您的音频将发送到谷歌以提供语音识别服务。”在安卓中?

    我正在使用谷歌语音识别器在 Android 中集成语音服务 但是当按下麦克风按钮时 会显示这条烦人的 toast 消息 请建议我一种隐藏此 toast 消息的方法 这是我的java代码 public class FormActivity e
  • 如何合并对象数组中的重复项并对特定属性求和? [复制]

    这个问题在这里已经有答案了 我有这个对象数组 var arr name John contributions 2 name Mary contributions 4 name John contributions 1 name Mary c
  • PyQt 中同一模型的不同视图

    我有一个关于 PyQt 中特定模型的多个视图的问题 目前 我有一个 TreeView 设置来显示继承自 StandardItemModel 的模型 模型中存在三种类型的 StandardItem Alpha Beta Gamma 它们在 T
  • 单元测试通过 Django 中模型的正则表达式验证器

    我为 models py 中的一些字段定义了模型以及正则表达式验证器 在tests py中 我编写了测试来验证这些验证器 但它们却通过了 尽管当我尝试通过视图输入错误的值时验证器会发出警报 并且我的 forms py 中没有该表单的任何 干
  • 如何查询iPhone当前的IP地址?

    如何查询iPhone当前的IP地址 如果你想要externalIP地址 用于从本地网络外部连接的IP地址 您需要查询外部网络上的服务器 快速搜索后得到以下结果 http checkip dyndns org http checkip dyn
  • Edmx 需要 Primary_Key 吗?

    在 net 中创建 Edmx 时 在创建数据库的 Edmx 时 仅添加具有主键的表和视图 这是一个问题 这个问题很容易解决 但只需在表或视图中创建列主键 但我不知道为什么有必要 谁能解释一下其背后的原因吗 实体框架需要一个主键来正确地将一条
  • 在 node-cron 中获取下一个 cron 作业时间

    在node cron中 如何获取下一个cron作业的时间 例如cronJob next CronJob time 或其他属性 文档中没有任何方法可以证明这一点 我不知道有什么方法可以使用节点 cron https www npmjs com
  • Windows Azure 共享访问签名始终给出:Forbidden 403

    我正在尝试获取单个 blob 的共享访问签名 然后使用 REST api 下载该 blob 但是 我总是收到禁止的 403 错误消息 都在存储模拟器和云上 这是我的代码 CloudStorageAccount storageAccount
  • File.Copy 之后文件正被另一个进程使用

    我正在尝试管理我的网络应用程序中的文件 有时 我必须在文件夹中创建一个文件 使用 File Copy File Copy oldPath newPath 几秒钟后该文件可能会被删除 if File Exists newPath File D