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(),再一次证明细节很重要.
使用后需要关闭,w.close(),再一次证明细节很重要.
#1
一直感觉是问题出在注释掉的那几行代码上.希望能想个好办法.
#2
经过仔细查找,可以获取到文件长度j,只要不使用j这个long变量,就没有任何问题,一用就出问题了.求解..
#3
问题解决了,Dim w As WebResponse = th.GetResponse()
使用后需要关闭,w.close(),再一次证明细节很重要.
使用后需要关闭,w.close(),再一次证明细节很重要.