【发布时间】:2013-11-19 19:42:11
【问题描述】:
我正在尝试根据创建日期将 csv 文件从一个位置移动到另一个位置。
但是我使用的代码不起作用,它显示错误 sample.csv 已被另一个进程使用,我该如何解决这个问题?
这是错误消息“错误:System.Reflection.TargetInvocationException:调用的目标已引发异常。---> System.IO.IOException:进程无法访问文件'C:\新文件夹\Test.txt' 因为它正被另一个进程使用。 在 System.IO.__Error.WinIOError(Int32 错误代码,字符串可能全路径) 在 System.IO.File.InternalCopy(字符串源文件名,字符串 destFileName,布尔覆盖) 在 ST_b8571e8d94a54a80ab50a1e221d93b11.vbproj.ScriptMain.Main() --- 内部异常堆栈跟踪结束 --- 在 System.RuntimeMethodHandle._InvokeMethodFast(对象目标,Object[] 参数,SignatureStruct& sig,MethodAttributes methodAttributes,RuntimeTypeHandle typeOwner) 在 System.RuntimeMethodHandle.InvokeMethodFast(对象目标,对象 [] 参数,签名 sig,MethodAttributes 方法属性,RuntimeTypeHandle typeOwner) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object[] 参数,CultureInfo 文化,布尔型 skipVisibilityChecks) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object[] 参数,CultureInfo 文化) 在 System.RuntimeType.InvokeMember(字符串名称、BindingFlags bindingFlags、Binder binder、Object 目标、Object[] providedArgs、ParameterModifier[] 修饰符、CultureInfo 文化、String[] namedParams) 在 System.Type.InvokeMember(字符串名称,BindingFlags invokeAttr,Binder binder,Object 目标,Object[] args,CultureInfo 文化) 在 Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()"
Public Sub Main()
Dim csvFilesToday = New List(Of String)
Dim sourceDir As String = "C:\New folder"
Dim backupDir As String = "C:\New folder (2)"
For Each csv In Directory.GetFiles(sourceDir, "*.csv", IO.SearchOption.AllDirectories)
If File.GetCreationTime(csv).Date = Date.Today Then
File.Copy(Path.Combine(sourceDir, csv), Path.Combine(backupDir, csv), True)
End If
Next
Dts.TaskResult = ScriptResults.Success
End Sub
End Class
【问题讨论】:
-
确切的错误是什么?