FileSystemObject CopyFile:Unhanded Exception

时间:2017-03-03 16:21:21

标签: vb.net filesystemobject file-copying

我在使用FileSystemObject.CopyFile时遇到问题。我想我已经在我阅读过的论坛中正确使用它了,但我仍然遇到以下编译错误:

  

未处理ArgumentException:值不在预期范围内

以下是代码:

Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim fso As New Scripting.FileSystemObject
    Dim testfolderchk
    testfolderchk = Dir("C:\Test\")
    Dim inforeader As System.IO.FileInfo
    Dim filedestinationcheck = Dir("C:\Test2\")

  If testfolderchk <> "" Then 
        If Microsoft.VisualBasic.Left(testfolderchk, 4) = "test" Then
            inforeader = My.Computer.FileSystem.GetFileInfo("C:\Test" & testfolderchk)
            filetime = (inforeader.LastWriteTime)
            If testfolderchk = filedestinationcheck Then GoTo skipfile
            If testfolderchk = filedestinationcheck2 Then GoTo skipfile

        Else : GoTo skipfile
        End If
    End If

fso.CopyFile(testfolderchk, filedestinationcheck, True)

1 个答案:

答案 0 :(得分:2)

根据评论中的建议,您应该取消FileSystemObject的使用,而是使用System.IO命名空间,特别是FileInfo

  

提供用于创建,复制,删除,移动和打开文件的属性和实例方法,并帮助创建FileStream对象。这个类不能被继承。

使用FileInfo,您可以使用方法CopyTo (String, Boolean)

  

将现有文件复制到新文件,允许覆盖现有文件。

我已经起草了一些代码来向您展示我的意思:

Dim folderToCheck As String = "C:\Test"
Dim destinationFolder As String = "C:\Test2"

Dim file As IO.FileInfo = New IO.FileInfo(IO.Path.Combine(folderToCheck, "test.txt"))

Dim filetime As Date = file.LastWriteTime

file.CopyTo(IO.Path.Combine(destinationFolder, file.Name), True)

请注意使用Path.Combine

  

将两个字符串组合成一个路径。