IO.FileMode.Open的文件流没有给我什么

时间:2015-05-20 20:36:47

标签: vb.net

整个子程序

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变量的错误

1 个答案:

答案 0 :(得分:0)

请删除on/error resume next,这将使您更接近解决问题。通常情况下,这本身不会导致中断,但根据您的评论,它似乎有效。

作为对新手程序员的帮助...... 永远不要使用OnError 。您实质上是要求计算机跳过任何错误并继续。这是一件非常糟糕的事情。它可能暂时起作用,但这是一个非常糟糕的解决方案。

调试代码,找出它的中断位置并修复代码。如果问题是用户输入了导致中断的一些数据,那么将验证放入让他们知道,但不要只是跳过问题。它可能会在代码中回过头来咬你,很难发现很多行代码确实是罪魁祸首。