从服务器下载文件的方法

本文介绍了一种使用C#编程从服务器下载文件的方法,通过创建HttpWebRequest对象,设置ReadWriteTimeout属性,获取HttpWebResponse,读取并写入文件流,实现了文件的下载。同时,代码中包含了异常处理,确保下载过程的稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前不久做的东西需要用到一个自动更新的方法所用到。

 

 /// <summary>
        /// 下载文件
        /// </summary>
        /// <param name="URL">下载的基本链接地址(不含文件名)</param>
        /// <param name="Filename">下载的文件名</param>
        /// <param name="DownLoadPath">下载到本地的路径名</param>
        private bool DownLoadFile(string URL, string Filename, string DownLoadPath)
        {
            try
            {
                //从URL地址得到一个WEB请求
                System.Net.HttpWebRequest Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL + Filename);

//设置这个属性判断文件下载前或下载中网络是否断开(很重要)
                Myrq.ReadWriteTimeout = 1000;

                //从WEB请求得到WEB响应
                System.Net.HttpWebResponse myrp = (System.Net.HttpWebResponse)Myrq.GetResponse();
                //从WEB响应得到总字节数
                long totalBytes = myrp.ContentLength;
                //从WEB请求创建流(读)
                System.IO.Stream st = myrp.GetResponseStream();
                //判断文件夹是否存在,不存在则建立新文件夹
                if (!Directory.Exists(DownLoadPath))
                {
                    Directory.CreateDirectory(DownLoadPath);
                }
                //记录实际下载的字节数
                long totalDownloadedByte = 0;
                //创建文件流(写)
                System.IO.Stream so = new System.IO.FileStream(DownLoadPath + Filename, System.IO.FileMode.Create);
                byte[] by = new byte[1024];
                //读流
                int osize = st.Read(by, 0, (int)by.Length);
                while (osize > 0)
                {
                    //已更新的文件大小
                    totalDownloadedByte += osize;
                    //写流
                    so.Write(by, 0, osize);
                    //读流
                    osize = st.Read(by, 0, (int)by.Length);
                }
                //关闭流
                so.Close();
                //关闭流
                st.Close();
                //下载的字节数判断是否下载成功了
                if (totalDownloadedByte == totalBytes)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch (Exception ex)
            {
                return false;
                //throw new Exception("下载更新文件出错:" + ex.Message);
            }
        }

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值