利用线程下载网页中的程序并另存到本地
生活随笔
收集整理的這篇文章主要介紹了
利用线程下载网页中的程序并另存到本地
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前臺頁面要輸入下載地址和另存路徑 private void BtnDown_Click(object sender, System.EventArgs e)
{
//開始線程下載文件
DownloadClass downFile =new DownloadClass();
downThread = new Thread(new ThreadStart(downFile.DownloadFile));
downFile.StrUrl = txtFromUrl.Text;
downFile.StrFileName = txtSavePath.Text;
downThread.Start();
} 下載并保存下載文件的類 using System;
using System.IO;
using System.Net;
namespace HGJ.DBA
{
/**////<summary>
/// DownloadClass 的摘要說明。
///</summary>
public class DownloadClass
{
//打開上次下載的文件或新建文件
public string StrUrl;//文件下載網址
public string StrFileName;//下載文件保存地址
public string strError;//返回結果
public long lStartPos =0; //返回上次下載字節
public long lCurrentPos=0;//返回當前下載字節
public long lDownloadFile;//返回當前下載文件長度
public void DownloadFile()
{
System.IO.FileStream fs;
if (System.IO.File.Exists(StrFileName))
{
fs= System.IO.File.OpenWrite(StrFileName);
lStartPos=fs.Length;
fs.Seek(lStartPos,System.IO.SeekOrigin.Current);
//移動文件流中的當前指針
}
else
{
fs = new System.IO.FileStream(StrFileName,System.IO.FileMode.Create);
lStartPos =0;
}
//打開網絡連接
try
{
System.Net.HttpWebRequest request =(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(StrUrl);
long length=request.GetResponse().ContentLength;
lDownloadFile=length;
if (lStartPos>0)
request.AddRange((int)lStartPos); //設置Range值
//向服務器請求,獲得服務器回應數據流
System.IO.Stream ns= request.GetResponse().GetResponseStream();
//這里可直接將獲取到的下載數據存入數據庫,傳遞:nbytes 即可對應Image類型
byte[] nbytes = new byte[512];
int nReadSize=0;
nReadSize=ns.Read(nbytes,0,512);
while( nReadSize >0)
{
fs.Write(nbytes,0,nReadSize);
nReadSize=ns.Read(nbytes,0,512);
lCurrentPos=fs.Length;
}
fs.Close();
ns.Close();
strError="下載完成";
}
catch(Exception ex)
{
fs.Close();
strError="下載過程中出現錯誤:"+ ex.ToString();
}
}
}
}
{
//開始線程下載文件
DownloadClass downFile =new DownloadClass();
downThread = new Thread(new ThreadStart(downFile.DownloadFile));
downFile.StrUrl = txtFromUrl.Text;
downFile.StrFileName = txtSavePath.Text;
downThread.Start();
} 下載并保存下載文件的類 using System;
using System.IO;
using System.Net;
namespace HGJ.DBA
{
/**////<summary>
/// DownloadClass 的摘要說明。
///</summary>
public class DownloadClass
{
//打開上次下載的文件或新建文件
public string StrUrl;//文件下載網址
public string StrFileName;//下載文件保存地址
public string strError;//返回結果
public long lStartPos =0; //返回上次下載字節
public long lCurrentPos=0;//返回當前下載字節
public long lDownloadFile;//返回當前下載文件長度
public void DownloadFile()
{
System.IO.FileStream fs;
if (System.IO.File.Exists(StrFileName))
{
fs= System.IO.File.OpenWrite(StrFileName);
lStartPos=fs.Length;
fs.Seek(lStartPos,System.IO.SeekOrigin.Current);
//移動文件流中的當前指針
}
else
{
fs = new System.IO.FileStream(StrFileName,System.IO.FileMode.Create);
lStartPos =0;
}
//打開網絡連接
try
{
System.Net.HttpWebRequest request =(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(StrUrl);
long length=request.GetResponse().ContentLength;
lDownloadFile=length;
if (lStartPos>0)
request.AddRange((int)lStartPos); //設置Range值
//向服務器請求,獲得服務器回應數據流
System.IO.Stream ns= request.GetResponse().GetResponseStream();
//這里可直接將獲取到的下載數據存入數據庫,傳遞:nbytes 即可對應Image類型
byte[] nbytes = new byte[512];
int nReadSize=0;
nReadSize=ns.Read(nbytes,0,512);
while( nReadSize >0)
{
fs.Write(nbytes,0,nReadSize);
nReadSize=ns.Read(nbytes,0,512);
lCurrentPos=fs.Length;
}
fs.Close();
ns.Close();
strError="下載完成";
}
catch(Exception ex)
{
fs.Close();
strError="下載過程中出現錯誤:"+ ex.ToString();
}
}
}
}
轉載于:https://www.cnblogs.com/ShenJH/archive/2011/11/03/2235089.html
總結
以上是生活随笔為你收集整理的利用线程下载网页中的程序并另存到本地的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VSCode工具常用命令总结
- 下一篇: java static method_j