You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何为U盘文件复制程序添加复制完成后自动关闭的代码?

解决U盘文件复制完成后自动关闭程序的问题

首先,你的代码已经实现了从U盘复制文件到我的文档\Backup的核心功能,要实现复制完成后自动关闭程序,只需要在文件复制循环结束后添加退出程序的代码即可。根据你的应用类型(Windows Forms/控制台),这里提供两种常用的实现方式:

方式一:适用于Windows Forms应用(优雅退出)

如果这是一个Windows Forms程序,使用Application.Exit()可以优雅地关闭所有窗体、终止消息循环并退出程序,是比较推荐的方式:

Dim Source As String = (GetDriveLetterFromMask(Volume.dbcv_unitmask) & "\")
' 注意:你原代码里的路径多了个冒号,修正为"\", 否则路径会无效
Dim Destination As String = My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Backup\"
' 建议在目标路径末尾加上"\", 避免拼接文件名时出错

' 先确保目标文件夹存在,防止复制失败
If Not My.Computer.FileSystem.DirectoryExists(Destination) Then
    My.Computer.FileSystem.CreateDirectory(Destination)
End If

' 遍历所有文件和文件夹(保留原目录结构)
For Each strFile As String In My.Computer.FileSystem.GetFiles(Source, FileIO.SearchOption.SearchAllSubDirectories, "*.*")
    ' 获取文件相对于U盘根目录的路径,保留原文件夹结构
    Dim relativePath As String = strFile.Substring(Source.Length)
    Dim targetFilePath As String = Destination & relativePath
    
    ' 确保目标子文件夹存在
    Dim targetDir As String = System.IO.Path.GetDirectoryName(targetFilePath)
    If Not My.Computer.FileSystem.DirectoryExists(targetDir) Then
        My.Computer.FileSystem.CreateDirectory(targetDir)
    End If
    
    ' 复制文件,设置True覆盖已存在的文件
    My.Computer.FileSystem.CopyFile(strFile, targetFilePath, True)
Next

' 复制完成后关闭程序
Application.Exit()

方式二:适用于控制台应用或强制退出场景

如果是控制台程序,或者你需要直接终止进程(不处理未释放资源),可以使用Environment.Exit()

' (前面的复制代码同上)

' 复制完成后强制退出,0表示正常退出状态码
Environment.Exit(0)

额外优化提示

  • 针对2-6GB的大文件复制,建议添加异常处理,避免复制过程中出错导致程序崩溃无法退出:
Try
    ' 把所有复制逻辑放在Try块内
    For Each strFile As String In My.Computer.FileSystem.GetFiles(Source, FileIO.SearchOption.SearchAllSubDirectories, "*.*")
        ' ...复制逻辑...
    Next
    ' 复制成功后退出
    Application.Exit()
Catch ex As Exception
    ' 可以添加弹窗提示用户出错信息
    MessageBox.Show("文件复制失败:" & ex.Message)
    ' 即使出错也需要退出的话,在这里添加退出代码
    Application.Exit()
End Try

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

火山引擎 最新活动