整个子程序
Public Sub CopyFile(ByVal NewCopy As String, ByVal FileToCopy As String)
On Error Resume Next
If System.IO.File.Exists(FileToCopy) = True Then
System.IO.File.Copy(FileToCopy, NewCopy)
Else
MsgBox("file not found")
End If
Dim sr As New IO.FileStream(FileToCopy, IO.FileMode.Open) 'source file
Dim sw As New IO.FileStream(NewCopy, IO.FileMode.Create) 'target file, defaults overwrite
Dim len As Long = sr.Length - 1
ProgressBar1.Visible = True
For i As Long = 0 To len
sw.WriteByte(sr.ReadByte)
If i Mod 1000 = 0 Then
ProgressBar1.Value = i * 100 / len
Application.DoEvents()
End If
Next
ProgressBar1.Value = 0
ProgressBar1.Visible = False
If ProgressBar1.Value = 0 Then
MsgBox("copy done")
Me.Enabled = True
End If
sr.Close()
End Sub
当我使用它来复制文件时,sr变量什么都不是。怎么了? 该文件被复制为零文件
我认为获取sr变量的错误
答案 0 :(得分:0)
请删除on/error resume next
,这将使您更接近解决问题。通常情况下,这本身不会导致中断,但根据您的评论,它似乎有效。
作为对新手程序员的帮助...... 永远不要使用OnError 。您实质上是要求计算机跳过任何错误并继续。这是一件非常糟糕的事情。它可能暂时起作用,但这是一个非常糟糕的解决方案。
调试代码,找出它的中断位置并修复代码。如果问题是用户输入了导致中断的一些数据,那么将验证放入让他们知道,但不要只是跳过问题。它可能会在代码中回过头来咬你,很难发现很多行代码确实是罪魁祸首。