如果您要参加我的计划,我正在尝试修补系统或更新程序。我想要它做的是下载文本文件中特定形式的补丁列表。
像这样:
1 http://127.0.0.1:8080/patches/test1.rar
2 http://127.0.0.1:8080/patches/test2.rar
3 http://127.0.0.1:8080/patches/test3.rar
这是1和链接之间的标签。
然后我希望它检查当前启动程序或程序的版本号是否与PatchList.txt文件中的LAST补丁相匹配。最后一个补丁是版本3,此时启动器版本为0。
所以如果它不匹配那么它应该开始逐个下载补丁。从补丁1到补丁3。
我认为循环语句最适合它所以我提出了这个想法:
让它下载PatchList.txt,然后分别读取每一行。在读取一行后,它将分割为tab,因此将有两个变量Version和PatchURL。
然后它将检查版本以查看它是否与启动器版本匹配,如果没有,则它将从PatchURL下载文件并应用它,然后将启动器版本设置为当前补丁的版本,然后再次检查,如果版本号和它匹配,那么将没有更新,所以它将完成。
我不确切知道如何将其放入代码中。我已经尝试了很多年能够下载txt文件并逐行阅读但我无法做到。我尝试了很多不同的东西,从StreamReader到StringReader以及其他一些东西。
我很感激任何帮助。这对我来说非常令人沮丧。
答案 0 :(得分:0)
下载是什么意思?
我会尝试这里提到的解决方案。 How to read a specific line from a text file in VB
否则,我会建议在版本文件中使用XML并反序列化它。
答案 1 :(得分:0)
如果你只想下载文件并再次阅读,那就像
一样简单My.Computer.Network.DownloadFile("http://your_url.txt", "local_tmp_path")
如果您不想将文件保存在磁盘上但在内存中读取,可以使用以下内容:
Dim httpRequest = DirectCast(WebRequest.Create("http://your_url.txt"), HttpWebRequest)
Dim httpResponse = DirectCast(httpRequest.GetResponse(), HttpWebResponse)
Dim line As String
Using responseStream = httpResponse.GetResponseStream(), sr = New StreamReader(responseStream)
Do
line = sr.ReadLine()
If line IsNot Nothing Then
Dim s = line.Split(new String() {" "}, StringSplitOptions.RemoveEmptyEntries)
Dim version = s(0)
Dim path = s(1)
'Do something'
End If
Loop Until line Is Nothing
End Using
如果您尝试为您的软件实施更新系统,最好首先查看ClickOnce。