亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#實現文件斷點續傳下載的方法

2020-01-24 01:51:57
字體:
來源:轉載
供稿:網友

本文實例講述了C#實現文件斷點續傳下載的方法。分享給大家供大家參考。具體實現方法如下:

using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.IO;using System.Text;using System.Net;namespace simpleDemo{ class Program {  /// <summary>  /// 下載文件保留字  /// </summary>  public static string PERSIST_EXP = ".cdel";  /// <summary>   public static void Main(string[] args)  {   string path = "D://aa.txt";   string ec = getFileEncoding(path, "GB2312");   print("coding: " + ec);   // string content = fileReader(path, Encoding.GetEncoding(ec));   // print(content);   //fileWriter(path, "測試內容11", Encoding.GetEncoding(ec));   string url = "http://www.XXX.com/20120920172200024.flv";   string path1 = "D://aa1.flv";   download(url, path1);   //gapDownload(url, path1);   //t(url);  }  public static void t(string url) {   HttpWebRequest request = (System.Net.HttpWebRequest)HttpWebRequest.Create(url);   //WebResponse response = httpClient.CreateGetHttpResponse(url, 3000, null, null);   try {    WebResponse response = request.GetResponse();    WebHeaderCollection headers = response.Headers;    print(response.ContentLength);    request = (System.Net.HttpWebRequest)HttpWebRequest.Create(url);    request.AddRange(11); //設置Range值    WebResponse response1 = request.GetResponse();    print(response1.ContentLength);    foreach (string key in headers)    {     print(key + "----- " + headers.Get(key));    }    string disposition = headers.Get("Content-Disposition");    print(disposition);   }catch(Exception e){    print(e.Message);   }   //string fileName = disposition.Substring(disposition.IndexOf("/""));   //print(fileName);  }  public static void download(string url, string path) {   if (File.Exists(path))   {    print("文件己存在!是否重新下載?");    return;   }   else {    path = path + PERSIST_EXP;    simpleDownload(url,path);//開始下載   }   }  /// <summary>  /// 下載網絡資源(支持斷點續傳)  /// </summary>  /// <param name="url"></param>  /// <param name="path"></param>  public static void simpleDownload(string url, string path)  {   HttpWebRequest request = httpClient.getWebRequest(url, 0);   WebResponse response = null;   FileStream writer = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);   long lStartPos = writer.Length; ;//當前文件大小   long currentLength = 0;   long totalLength = 0;//總大小    if (File.Exists(path))//斷點續傳   {    response = request.GetResponse();    long sTotal = response.ContentLength;    if (sTotal == lStartPos) {     close(writer);     File.Move(path, path.Replace(PERSIST_EXP, ""));     print("下載完成!");     return;    }    request = httpClient.getWebRequest(url, (int)lStartPos);    //設置Range值    writer.Seek(lStartPos, SeekOrigin.Begin);//指針跳轉    response = request.GetResponse();    totalLength = response.ContentLength + lStartPos; //總長度    currentLength = lStartPos; //當前長度   }   else   {    response = request.GetResponse();    totalLength = response.ContentLength;   }   Stream reader = response.GetResponseStream();   byte[] buff = new byte[1024];   int c = 0; //實際讀取的字節數   while ((c = reader.Read(buff, 0, buff.Length)) > 0)   {    currentLength += c;    writer.Write(buff, 0, c);    progressBar(currentLength, totalLength);//進度條    writer.Flush();   }   close(writer);   if (currentLength == totalLength)   {    File.Move(path, path.Replace(PERSIST_EXP, ""));    print("下載完成!");   }   if (reader != null)   {    reader.Close();    reader.Dispose();    response.Close();   }  }  private static void close(FileStream writer)  {   if (writer != null)   {    writer.Close();    writer.Dispose();   }  }  /// <summary>  /// 進度條  /// </summary>  /// <param name="currentLength">當前長度</param>  /// <param name="totalLength">總長度</param>  public static void progressBar(Object currentLength, Object totalLength)  {   double aaa = System.Convert.ToDouble(currentLength);   double bbb = System.Convert.ToDouble(totalLength);   print(currentLength + "/" + totalLength + "__" + (aaa / bbb).ToString("0.00 %"));  }  /// <summary>  /// 系統輸出  /// </summary>  /// <param name="obj"></param>  public static void print(Object obj){   Console.WriteLine(obj);  }  public static void printStr(string[] str)  {   foreach (string d in str)   {    print(d);   }  }  /// <summary>  /// 文件寫  /// </summary>  /// <param name="path">文件路徑</param>  /// <param name="content">要寫入的內容</param>  public static void fileWriter(string path,string content,Encoding encoding)  {   if (File.Exists(path))   {    StreamWriter sw = new StreamWriter(path, true, encoding);    sw.WriteLine(content);    sw.Flush();    sw.Close();   }  }  /// <summary>  /// 讀文件,返回內容  /// </summary>  /// <param name="path">文件路徑</param>  /// <param name="enCoding">默認編碼格式</param>  /// <returns></returns>  public static string fileReader(string path,Encoding enCoding) {   StringBuilder sb = new StringBuilder();   if(enCoding == null){    enCoding = Encoding.Default;   }   //讀取文件   StreamReader sr = new StreamReader(path, enCoding);    string s = "";    while ((s = sr.ReadLine()) != null)    {     sb.AppendLine(s);    }    if(sr != null)     sr.Close();   return sb.ToString();  }  /// <summary>  /// 獲取文件編碼格式  /// </summary>  /// <param name="path">文件路徑</param>  /// <param name="defaultEncoding">默認編碼</param>  /// <returns></returns>  public static string getFileEncoding(string path, string defaultEncoding) {   string ed = defaultEncoding;   if (File.Exists(path)) {    FileStream fs = new FileStream(path, FileMode.Open);    ed = GetEncoding(fs, defaultEncoding);    if (fs != null)     fs.Close();    }   return ed;  }  /// <summary>  /// 取得一個文本文件流的編碼方式。  /// </summary>  /// <param name="stream">文本文件流。</param>  /// <param name="defaultEncoding">默認編碼方式。當該方法無法從文件的頭部取得有效的前導符時,將返回該編碼方式。</param>  /// <returns></returns>  public static string GetEncoding(FileStream stream, string defaultEncoding)  {   string targetEncoding = defaultEncoding;   if (stream != null && stream.Length >= 2)   {    //保存文件流的前4個字節    byte byte1 = 0;    byte byte2 = 0;    byte byte3 = 0;    byte byte4 = 0;    //保存當前Seek位置    long origPos = stream.Seek(0, SeekOrigin.Begin);    stream.Seek(0, SeekOrigin.Begin);    int nByte = stream.ReadByte();    byte1 = Convert.ToByte(nByte);    byte2 = Convert.ToByte(stream.ReadByte());    if (stream.Length >= 3)    {     byte3 = Convert.ToByte(stream.ReadByte());    }    if (stream.Length >= 4)    {     byte4 = Convert.ToByte(stream.ReadByte());    }    //根據文件流的前4個字節判斷Encoding    //Unicode {0xFF, 0xFE};    //BE-Unicode {0xFE, 0xFF};    //UTF8 = {0xEF, 0xBB, 0xBF};    if (byte1 == 0xFE && byte2 == 0xFF)//UnicodeBe    {     targetEncoding = Encoding.BigEndianUnicode.BodyName;    }    if (byte1 == 0xFF && byte2 == 0xFE && byte3 != 0xFF)//Unicode    {     targetEncoding = Encoding.Unicode.BodyName;    }    if (byte1 == 0xEF && byte2 == 0xBB && byte3 == 0xBF)//UTF8    {     targetEncoding = Encoding.UTF8.BodyName;    }    //恢復Seek位置     stream.Seek(origPos, SeekOrigin.Begin);   }   return targetEncoding;  } }}using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.Net.Security;using System.Security.Cryptography.X509Certificates;using System.IO;namespace simpleDemo{ /// <summary> /// 公用 Http 請求類 /// </summary> class httpClient {  /// <summary>  /// 獲取基礎WebRequest  /// </summary>  /// <param name="url">請求地址</param>  /// <param name="lStartPos">請求的開始位置</param>  /// <returns></returns>  public static HttpWebRequest getWebRequest(string url, int lStartPos)  {   HttpWebRequest request = null;   try   {    request = (System.Net.HttpWebRequest)HttpWebRequest.Create(url);    request.AddRange(lStartPos); //設置Range值   }   catch (Exception ex)   {    Program.print(ex.Message);   }   return request;  } }}

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩激情视频在线| 亚洲va欧美va国产综合久久| 狠狠躁夜夜躁人人躁婷婷91| 午夜精品福利在线观看| 欧美一区二区三区四区在线| 国产有码在线一区二区视频| 欧美在线欧美在线| 欧美韩国理论所午夜片917电影| 久久综合久久八八| 一区二区三区四区精品| 欧洲成人免费视频| 日韩va亚洲va欧洲va国产| 欧美激情成人在线视频| 久久精品影视伊人网| 日韩美女在线看| 亚洲国产日韩欧美综合久久| 日韩精品黄色网| 亚洲japanese制服美女| 亚洲人成在线观看网站高清| 国产aⅴ夜夜欢一区二区三区| 91色琪琪电影亚洲精品久久| 久久久精品国产网站| 国产aⅴ夜夜欢一区二区三区| 欧美午夜电影在线| 成人黄色av网| 亚洲永久免费观看| 久久久久久国产精品三级玉女聊斋| 欧美理论电影网| 亚洲国语精品自产拍在线观看| 日韩精品福利网站| 一本色道久久综合狠狠躁篇的优点| 成人激情视频免费在线| 成人有码在线视频| 亚洲午夜激情免费视频| 欧美电影第一页| 国产精品wwwwww| 午夜精品www| 亚洲www永久成人夜色| 国产婷婷色综合av蜜臀av| 国产精品第2页| 在线观看欧美www| 大胆欧美人体视频| 亚洲区一区二区| 亚洲国产99精品国自产| 久久精品久久久久久国产 免费| 中文亚洲视频在线| 久久久久久这里只有精品| 国产成人一区二区三区电影| 欧美激情一二三| 国产精品久久久久久久久久小说| 亚洲va国产va天堂va久久| 国产精品久久久精品| 亚洲精品国产精品乱码不99按摩| 日韩av在线免费看| 色婷婷亚洲mv天堂mv在影片| 亚洲一区二区三区成人在线视频精品| 国产在线视频一区| 欧美主播福利视频| 九九热这里只有精品6| 美女av一区二区三区| 亚洲精品久久久久中文字幕欢迎你| 欧美激情一级欧美精品| 国产精品影片在线观看| 欧美成人午夜影院| 久久伊人免费视频| 久久99精品国产99久久6尤物| 久久久精品免费视频| 欧美午夜视频在线观看| 欧美一区二区三区图| 国产精品久久久久久久久免费| 亚洲伊人久久综合| 国产精品亚洲网站| 国产精品久久久久久av下载红粉| 日本欧美中文字幕| 国产亚洲欧洲高清一区| 国产精品久久久久久一区二区| 亚洲一区国产精品| 亚洲人成电影网站色xx| 在线看欧美日韩| 亚洲精品98久久久久久中文字幕| 亚洲第一男人天堂| 伊人伊成久久人综合网小说| 欧美中文在线字幕| 一区二区三区日韩在线| 91精品啪在线观看麻豆免费| 国产精品jvid在线观看蜜臀| 亚洲电影在线观看| 久久精品色欧美aⅴ一区二区| 日产精品99久久久久久| 国产精品xxxxx| 欧美色xxxx| 亚洲男人天堂2024| 亚洲美女av在线| 亚洲电影av在线| 国产一区二区三区四区福利| 国产精品福利久久久| 国产精品www色诱视频| 欧美性受xxxx黑人猛交| 91久久久久久| 91色p视频在线| 亚洲第一精品电影| 欧美激情xxxx| 91久久国产精品91久久性色| 成人欧美一区二区三区黑人| 欧美黑人又粗大| 欧美成人免费网| 久久6精品影院| 91亚洲国产成人久久精品网站| 日韩黄色在线免费观看| 91精品视频观看| 精品偷拍一区二区三区在线看| 亚洲91精品在线观看| www.日韩系列| 在线电影欧美日韩一区二区私密| 久久精视频免费在线久久完整在线看| 欧美日韩国产精品一区二区三区四区| 中文字幕欧美亚洲| 91免费人成网站在线观看18| 欧美国产日韩精品| 亚洲男人天堂视频| 日韩欧美在线免费观看| 91精品国产91久久久久福利| 2018国产精品视频| 超碰精品一区二区三区乱码| 欧美美女操人视频| 欧美极品少妇xxxxⅹ裸体艺术| 91中文字幕在线| 国产精品福利网站| 欧美在线一区二区三区四| 亚洲一区二区三区视频播放| 国产视频一区在线| 美女av一区二区三区| 国自在线精品视频| 精品magnet| 一区二区三区在线播放欧美| 福利二区91精品bt7086| 6080yy精品一区二区三区| 成人黄在线观看| 欧美精品videosex性欧美| 国产亚洲精品美女久久久| 国产精品久久中文| 欧美野外wwwxxx| 97精品伊人久久久大香线蕉| 国产偷国产偷亚洲清高网站| 在线一区二区日韩| 中文字幕日韩在线播放| 亚洲视频999| 国产婷婷97碰碰久久人人蜜臀| 黑人巨大精品欧美一区免费视频| 在线精品高清中文字幕| 91久久中文字幕| 麻豆精品精华液| 另类图片亚洲另类| 欧美日本精品在线| 岛国av一区二区| 久久久精品一区二区| 亚洲国产日韩一区| 久久精品国产成人精品| 中文字幕v亚洲ⅴv天堂| 久久久噜噜噜久久| 欧美网站在线观看| 欧美亚洲国产精品| 日韩视频中文字幕| 久久精彩免费视频|