急。。。急。。。帮忙解决问题后,再送100分!!!!!!!

nocolor 2004-06-23 11:21:31
请先看下面的程序。
string myStringWebResource=null;
myStringWebResource="http://192.168.0.1/upgradelist.txt";
string path="d:\";
WebClient myWebClient=new WebClient();
try
{
myWebClient.DownloadFile(myStringWebResource,path);
}
catch
{
MessageBox.Show("下载列表文件没有成功!");
}
这一段是从192.168.0.1上下载upgradelist.txt文件的部分程序,现在我正在做一个自动升级程序,上面下载的那个upgradelist.txt文件是一个列表文件,里面分行存储了很多网络地址,每个地址就是对应服务器上一个文件。我想让程序每次读取upgradelist.txt的一行信息,然后调用下载程序把文件下载下来,再读第二行的内容,调用下载程序下载下来,这样循环一直到把upgradelist中指示的所用文件都下载到本地。请问应该怎么实现读取upgradelist中的每行信息,把值给myStringWebResource,而且循环到文件的最后一行。
...全文
186 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
nocolor 2004-06-25
  • 打赏
  • 举报
回复
谢谢各位,我的问题已经解决了,各位仁兄,我会马上给分结帖,请问我怎么才能发出200分呢。
nocolor 2004-06-24
  • 打赏
  • 举报
回复
我按照
while(text!=null)
{
text=StringReader.ReadLine();
}
这个原理写了一个,但每次只能读出偶数行的信息是怎么回事。
例如:文件upgradelist.txt
xxx.exe
bbb.exe
ccc.exe
ddd.exe
fff.exe
以上列表文件中的内容,但每次只能读出2,4行的内容,其它的读不出来。
private void down_repetition()
//这是按照列表文件中提供的内容下载文件的函数
{
try
{
StreamReader fl=new StreamReader(@"d:\\upgradelist.txt");
while(fl.ReadLine()!=null)
{
string filename=fl.ReadLine();
string text="http://www.xxx.net/soft/xx/"+filename;
string savepath="d:\\"+filename;
WebClient myDown=new WebClient();
myDown.DownloadFile(text,savepath);
}
MessageBox.Show("下载成功!");
Application.Exit();
}
catch
{
MessageBox.Show("下载失败!");
Application.Exit();
}
}
就是上面这一段程序了,只能下载到偶数行的文件,请大家帮忙看看这段程序有没有错误。
stome1025 2004-06-24
  • 打赏
  • 举报
回复
刚才看看jiezhi(風依舊)的代码觉得应该是可行的,不知道楼主说的只能读一行是读了一行就到文件尾了还是一直读出来的都是第一行.
可以这么试试,就用循环吧所有行都读出来存到string[]里去,然后再用一个循环慢慢的来做下载之类的事情
stome1025 2004-06-24
  • 打赏
  • 举报
回复
还有另外两种方法,一个是直接用openfile打开网络文件,前提是你放upgradelist.txt的文件夹至少是只读共享的,然后就可以然后用fileStream.Read方法把整个文件读出来然后用‘\r\n’作为标记,逐行提取

另外一个方法就是把upgradelist.txt做一个内存映射到本地,后面的方法同上
nocolor 2004-06-24
  • 打赏
  • 举报
回复
jiezhi(風依舊) 这拉老兄提供的编码思路基本和笨笨小猪的一样,昨天晚上我又试了试,我的文本文件里有五行,但是老是读出来偶数行,这是怎么回事?
nocolor 2004-06-24
  • 打赏
  • 举报
回复
用filename做判断和用fl.ReadLine()做判断有什么区别?
nocolor 2004-06-24
  • 打赏
  • 举报
回复
<codeangel(程序人生.NET)>你说的是不是用数据库,如果用数据库的话,是只把列表文件写到数据库中,还是把下载的数据也存到数据库中。一般来说,做这种智能的升级他们是怎么做的,我看瑞星的那个升级做得挺好的。他是怎么实现的。
sea026 2004-06-24
  • 打赏
  • 举报
回复
string filename=fl.ReadLine();
while(filename!=null)
{
string text="http://www.xxx.net/soft/xx/"+filename;
string savepath="d:\\"+filename;
WebClient myDown=new WebClient();
myDown.DownloadFile(text,savepath);

filename=fl.ReadLine();
}
codeangel 2004-06-24
  • 打赏
  • 举报
回复
建议写在一个表里,这样比较维护起来也方便!
jiezhi 2004-06-23
  • 打赏
  • 举报
回复
下面的代码示例读取整个文件,并在检测到文件尾时发出通知。

using System;
using System.IO;
public class TextFromFile
{
private const string FILE_NAME = "MyFile.txt";
public static void Main(String[] args)
{
if (!File.Exists(FILE_NAME))
{
Console.WriteLine("{0} does not exist.", FILE_NAME);
return;
}
StreamReader sr = File.OpenText(FILE_NAME);
String input;
while ((input=sr.ReadLine())!=null)
{
Console.WriteLine(input);
}
Console.WriteLine ("The end of the stream has been reached.");
sr.Close();
}
}
Mycro 2004-06-23
  • 打赏
  • 举报
回复
同意 Firestone2003(笨笨小猪) ,
不就完了么?
ChinaKable 2004-06-23
  • 打赏
  • 举报
回复
帮顶。
nocolor 2004-06-23
  • 打赏
  • 举报
回复
我就是下载到本地的,到本地后,怎么能循环读,因为你每读一行还要执行下载操作。
楼上的老兄你的那个text是循环读取每一行的内容吗?我试试,一会儿再来。
Firestone2003 2004-06-23
  • 打赏
  • 举报
回复
可以下载到本地在读取

while(text!=null)
{
text=StringReader.ReadLine();

}
nocolor 2004-06-23
  • 打赏
  • 举报
回复
好了,我今天晚上研究一下上面两个老兄的代码。明天再来。
nocolor 2004-06-23
  • 打赏
  • 举报
回复
笨笨小猪,你说的那个方法我试了不行啊,就能读出一行。其余的都读不出来。
CMIC 2004-06-23
  • 打赏
  • 举报
回复
System.IO.StreamReader mReader
=new System.IO.StreamReader("upgradelist.txt",System.Text.Encoding.GetEncoding("gb2312"));

string mTempStr=mReader.ReadToEnd();
mReader.Close();
string[] mStrs=mTempStr.Split(new char[]{'\r','\n'});

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧