try
{
//textBox2.AppendText(PnStr + "_" + PageNo + ".tif 开始重新下载\r\n");
client.DownloadFile(OriUri, DownFileName); Stream str = client.OpenRead(OriUri); //StreamReader reader = new StreamReader(str);
byte[] mbyte = new byte[100000];
int allmybyte = (int)mbyte.Length;
int startmbyte = 0;
//textBox2.AppendText("正在接收数据..." + PnStr + "_" + PageNo + ".tif\r\n");
while (allmybyte > 0)
{
int m = str.Read(mbyte, startmbyte, allmybyte);
if (m == 0)
break;
startmbyte += m;
allmybyte -= m;
} FileStream fstr = new FileStream(DownFilePath, FileMode.OpenOrCreate, FileAccess.Write);
fstr.Write(mbyte, 0, startmbyte);
str.Close();
fstr.Close();
//textBox2.AppendText(PnStr + "_" + PageNo + ".tif 数据下载完成\r\n");
}
catch (WebException exp)
{
MessageBox.Show(exp.Message, "Error");
}
这是我看到的一段下载文件的代码,我觉得奇怪的是client.DownloadFile(OriUri, DownFileName);就可以下载文件了,为什么还要后面写入流再保存,是不是多此一举呢,另外,直接保存和写入流效率是不是一样的?有没有通过压缩文件的方式来下载文?
谢谢!!!
{
//textBox2.AppendText(PnStr + "_" + PageNo + ".tif 开始重新下载\r\n");
client.DownloadFile(OriUri, DownFileName); Stream str = client.OpenRead(OriUri); //StreamReader reader = new StreamReader(str);
byte[] mbyte = new byte[100000];
int allmybyte = (int)mbyte.Length;
int startmbyte = 0;
//textBox2.AppendText("正在接收数据..." + PnStr + "_" + PageNo + ".tif\r\n");
while (allmybyte > 0)
{
int m = str.Read(mbyte, startmbyte, allmybyte);
if (m == 0)
break;
startmbyte += m;
allmybyte -= m;
} FileStream fstr = new FileStream(DownFilePath, FileMode.OpenOrCreate, FileAccess.Write);
fstr.Write(mbyte, 0, startmbyte);
str.Close();
fstr.Close();
//textBox2.AppendText(PnStr + "_" + PageNo + ".tif 数据下载完成\r\n");
}
catch (WebException exp)
{
MessageBox.Show(exp.Message, "Error");
}
这是我看到的一段下载文件的代码,我觉得奇怪的是client.DownloadFile(OriUri, DownFileName);就可以下载文件了,为什么还要后面写入流再保存,是不是多此一举呢,另外,直接保存和写入流效率是不是一样的?有没有通过压缩文件的方式来下载文?
谢谢!!!
{
int m = str.Read(mbyte, startmbyte, allmybyte);
if (m == 0)
break;
startmbyte += m;
allmybyte -= m;
}//怎么这么奇怪呢?
str =DownFile.OpenRead(url);
byte[] mbyte = new byte[1024];
int readL=str.Read(mbyte,0,1024);
fs=new FileStream(fileName,FileMode.OpenOrCreate,FileAccess.Write);
//读取流
while(readL!=0)
{
if(stopDown)
break;
fs.Write(mbyte,0,readL);//写文件
readL=str.Read(mbyte,0,1024);//读流
}
str.Close();
fs.Close();
用流只不过方便自己控制进度罢了,
明显写重了
目前我所知道的解决办法只能是,通知服务器要下载的文件,然后让服务器给你打包后告诉你地址(可以用aspx访问,或webService),你在下载,下载后解包.
打包和解饱的代码都得自己添,也可以打成象rar那样的自解压文件