vb.net中循环获取文件大小后无法下载文件的问题

时间:2022-05-18 13:51:05
下面是我的代码部分:
 Dim p_name() As String = Strings.Split(ssss, "|")
        Dim p_zth() As String = Strings.Split(s_zth, "|")
        
        For i = 0 To p_zth.Length - 2
            Dim ss As String = "D:\uback\" & p_zth(i)
            fpath = "D:\uback\" & p_zth(i) & "\ufdata.ba_"
            j = 0
            '检查路径是否存在,不存在则新建
            If System.IO.Directory.Exists(ss) = False Then
                System.IO.Directory.CreateDirectory(ss)
            End If

            If System.IO.File.Exists(fpath) = False Then
                ''------------------------------------------------------------开始获取文件大小
                zt.Text = "正在获取文件大小..."
                TextBox1.Text = p_name(i)
                'Dim th As WebRequest = WebRequest.Create(p_name(i))
                'Dim w As WebResponse = th.GetResponse()
                'j = w.ContentLength().ToString
                'th = Nothing
                'w = Nothing

                Label1.Text = "文件大小:" & danwei(j)
                Label4.Text = "保存路径:" & fpath
                zt.Text = "开始下载文件..."
                ''------------------------------------------------------------开始下载远程文件
                ''定时器开始
                Dim myIn As New MyInvoke(AddressOf jishikaishi)
                Me.BeginInvoke(myIn)
                Try
                    Dim dfile As New WebClient
                    dfile.DownloadFile(New Uri(p_name(i)), fpath) '下载指定nrl地址的文件
                    dfile.Dispose()
                    dfile = Nothing
                Catch ex As Exception
                    MsgBox(ex.Message)
                    Exit Sub
                End Try


                '下载完成,将已下载设置为全部
                Label2.Text = "已经下载:" & danwei(j)

                '设置进度条为100
                ProgressBar1.Value = 100

                '输出下载完成提示
                Dim tishi As String = "文件下载结束,共用时 " & miao & " 秒,平均速度:" '& danwei(j / miao) & "/S"
                zt.Text = tishi

                '定时器结束
                Dim myIns As New MyInvoke(AddressOf jishijieshu)
                Me.BeginInvoke(myIns)

                Label3.Text = "下载完成,平均 " ' & danwei(j / miao) & "/S"

              
            End If


        Next

执行后第一次获取文件大小正常,文件下载正常,第二次时获取文件大小正常,无法下载文件,下载的文件大小为0,如果只使用下载文件的那部分代码 
Dim dfile As New WebClient
dfile.DownloadFile(New Uri(p_name(i)), fpath) '下载指定nrl地址的文件
dfile.Dispose()
dfile = Nothing
那么可以正常下载所有的文件,请教一下获取文件大小的那一部分是什么问题呀,导致无法下载.谢谢

3 个解决方案

#1


一直感觉是问题出在注释掉的那几行代码上.希望能想个好办法.

#2


经过仔细查找,可以获取到文件长度j,只要不使用j这个long变量,就没有任何问题,一用就出问题了.求解..

#3


问题解决了,Dim w As WebResponse = th.GetResponse()
使用后需要关闭,w.close(),再一次证明细节很重要.

#1


一直感觉是问题出在注释掉的那几行代码上.希望能想个好办法.

#2


经过仔细查找,可以获取到文件长度j,只要不使用j这个long变量,就没有任何问题,一用就出问题了.求解..

#3


问题解决了,Dim w As WebResponse = th.GetResponse()
使用后需要关闭,w.close(),再一次证明细节很重要.