' resumedown.vb 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) req.AddRange(CType(startPos, Integer)) ' ダウンロード開始位置を設定 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() Return True End Function End Class ' コンパイル方法:vbc resumedown.vb ' 実行方法:resumedown.exe <URL> <保存先のファイル名>