我在使用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)
答案 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:
将两个字符串组合成一个路径。