You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.Net实现DragDrop拖拽复制文件时出现进程占用报错如何解决

VB.Net拖拽文件出现进程占用错误的修复方案

问题根因

  • 多余的File.Create(fileName)调用:File.Create执行时会打开被操作文件的读写句柄,代码中没有主动释放该句柄,导致文件被当前程序自身占用,后续移动/复制操作触发"进程无法访问文件"报错。该逻辑本身完全冗余,拖拽传入的是已存在的本地文件,无需重复创建原文件。
  • API误用:Directory.Move是用于移动目录的专用方法,操作单个文件应该使用File.Move,如需实现复制功能则使用File.Copy。

修复后代码

Private Sub CopyFileDrop(filePaths As String())
    ' 提前校验目标目录存在,避免路径不存在报错
    If Not Directory.Exists(gProgDir) Then
        Directory.CreateDirectory(gProgDir)
    End If
    For Each fileLoc As String In filePaths
        Dim fi As New IO.FileInfo(fileLoc)
        Dim newPathName As String = Path.Combine(gProgDir, fi.Name)
        ' 移动文件用这句
        File.Move(fileLoc, newPathName)
        ' 如果要做复制操作,注释上面那句,改用下面这句
        ' File.Copy(fileLoc, newPathName, True) ' 第三个参数为True表示覆盖同名文件
    Next fileLoc
End Sub

额外优化建议

  • 可以在操作前判断目标路径是否已存在同名文件,根据业务需求选择提示用户、跳过或者直接覆盖
  • 如果需要支持拖拽文件夹的场景,需要先判断传入路径是文件还是目录,分别做对应处理
  • 使用Path.Combine拼接路径,避免不同系统下路径分隔符不匹配的问题

内容的提问来源于stack exchange,提问作者CircleDot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:57:03