// レスポンスの取得
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
using (FileStream fs = new FileStream(file, FileMode.Create)) {
using (Stream st = res.GetResponseStream()) {
Byte[] buf = new Byte[1024];
int count = 0;
do {
count = st.Read(buf, 0, buf.Length);
fs.Write(buf, 0, count);
} while (count != 0);
}
}
res.Close();
}
}
Imports System
Imports System.IO
Imports System.Net
Public Class WebUtil
Public Shared Sub Download(ByVal url As String, ByVal file As String)
' リクエストの作成
Dim req As HttpWebRequest _
= CType(WebRequest.Create(url), HttpWebRequest)
' レスポンスの取得
Dim res As HttpWebResponse _
= CType(req.GetResponse(), HttpWebResponse)
Using st As Stream = res.GetResponseStream()
Using fs As New FileStream(file, FileMode.Create)
Dim buf(1024) As Byte
Dim count As Integer = 0
Do
count = st.Read(buf, 0, buf.Length)
fs.Write(buf, 0, count)
Loop While count <> 0
End Using
End Using
res.Close()
End Sub
End Class
Imports System
Imports System.IO
Imports System.Net
Public Class WebUtil
Shared Sub Main(ByVal args As String())
If args.Length <> 2 Then
Return
End If
Dim url As String = args(0)
Dim fileName As String = args(1)
Dim startPos As Long = 0
' ファイルがすでに存在する場合、
' ファイルのサイズを取得する
If File.Exists(fileName) Then
Dim info As New FileInfo(fileName)
startPos = info.Length
End If
WebRequest.DefaultWebProxy = Nothing ' プロキシを使用しない
ResumeDownload(url, fileName, startPos)
End Sub
Public Shared Function ResumeDownload(ByVal url As String, ByVal file As String, ByVal startPos As Long) As Boolean
Console.WriteLine("開始位置:" & startPos)
' リクエストの作成
Dim req As HttpWebRequest _
= CType(WebRequest.Create(url), HttpWebRequest)
' レスポンスの取得
Dim res As HttpWebResponse _
= CType(req.GetResponse(), HttpWebResponse)
If res.StatusCode <> HttpStatusCode.PartialContent
' レジュームに対応してない場合
res.Close()
return False
End If
Using fs As New FileStream(file, FileMode.OpenOrCreate)
fs.Seek(0, SeekOrigin.End) ' 末尾に追記
Using st As Stream = res.GetResponseStream()
Dim buf(1024) As Byte
Dim count As Integer = 0
Do
count = st.Read(buf, 0, buf.Length)
fs.Write(buf, 0, count)
Loop While count <> 0
End Using
End Using
res.Close()