C# 下载网络资源的实例

2024-06-02 21:58

本文主要是介绍C# 下载网络资源的实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是个通过http下载网络URL所指向的资源的实例,写的比较简陋,还请见谅。

主要用到的控件:SaveFileDialog,ProcessBar等。

主要用到了输入输出流的知识以及多线程的知识。

(关于“如何:对 Windows 窗体控件进行线程安全调用”的问题,欢迎访问http://msdn.microsoft.com/query/dev11.query?appId=Dev11IDEF1&l=ZH-CN&k=k(EHInvalidOperation.WinForms.IllegalCrossThreadCall);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.0);k(DevLang-csharp)&rd=true)

我这里使用了“CheckForIllegalCrossThreadCalls = false;”的方法(等于完全忽视了线程安全~不过省事啊~)

代码很简单,直接贴下来就好了:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;namespace ReadStream
{public partial class Download : Form{public Download(){InitializeComponent();//多线程省些事CheckForIllegalCrossThreadCalls = false;}private int processCount=0;private void button1_Click(object sender, EventArgs e){string urlStr = textBox1.Text;string saveNameStr = textBox2.Text;if (textBox1.Text.Equals("") || textBox2.Text.Equals("")){MessageBox.Show("请填写输入信息");}else{new Thread(new ThreadStart(OnDownLoad)).Start();}}public void OnDownLoad(){button1.Text = "下载中";button1.Enabled = false;string showText = DownloadFile(textBox1.Text, textBox2.Text);MessageBox.Show(showText);button1.Text = "下载";button1.Enabled = true;progressBar1.Value = 0;processCount = 0;}/// <summary>        /// 下载文件        /// </summary>        /// <param name="URL">下载文件地址</param>       /// <param name="Filename">下载后的存放地址</param>        public String DownloadFile(string URL, string filename){try{System.Net.HttpWebRequest myRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL);System.Net.HttpWebResponse myResponse = (System.Net.HttpWebResponse)myRequest.GetResponse();long totalBytes = myResponse.ContentLength;if (myResponse.ContentLength != 0){System.IO.Stream st = myResponse.GetResponseStream();System.IO.Stream so = new System.IO.FileStream(filename,System.IO.FileMode.Create);long totalDownloadedByte = 0;byte[] by = new byte[1024];int restSize = st.Read(by, 0, (int)by.Length);while (restSize > 0){totalDownloadedByte = restSize + totalDownloadedByte;so.Write(by, 0, restSize);restSize = st.Read(by, 0, (int)by.Length);//处理processprocessCount = (int)(100 * totalDownloadedByte / totalBytes);progressBar1.Value = processCount;}so.Close();st.Close();return "成功";}else{return "网络资源不存在";}}catch (System.Exception e){return "下载文件失败!" + e.ToString();}}private void button2_Click(object sender, EventArgs e){if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK){textBox2.Text = saveFileDialog1.FileName;}}private void Download_Load(object sender, EventArgs e){textBox2.Enabled = false;}}
}
程序界面很简洁:


项目实例已经上传,欢迎下载~

这篇关于C# 下载网络资源的实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1025195

相关文章

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

C#下Newtonsoft.Json的具体使用

《C#下Newtonsoft.Json的具体使用》Newtonsoft.Json是一个非常流行的C#JSON序列化和反序列化库,它可以方便地将C#对象转换为JSON格式,或者将JSON数据解析为C#对... 目录安装 Newtonsoft.json基本用法1. 序列化 C# 对象为 JSON2. 反序列化

C#文件复制异常:"未能找到文件"的解决方案与预防措施

《C#文件复制异常:未能找到文件的解决方案与预防措施》在C#开发中,文件操作是基础中的基础,但有时最基础的File.Copy()方法也会抛出令人困惑的异常,当targetFilePath设置为D:2... 目录一个看似简单的文件操作问题问题重现与错误分析错误代码示例错误信息根本原因分析全面解决方案1. 确保

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引