重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
给你一个遍历所有盘符下的文件夹的例子加一个遍历文件的就可以了。TreeNode node = new TreeNode("我的电脑"); treeView.Nodes.Add(node); //加入一个我的电脑节点 string[] drivesName = System.IO.Directory.GetLogicalDrives() //取得驱动器列表的集合 foreach(string name in drivesName) //用foreach遍历集合 { TreeNode drivesNode = new TreeNode(name); node.Nodes.Add(drivesNode); //加到我的电脑节点下 }
创新互联是一家集网站建设,神木企业网站建设,神木品牌网站建设,网站定制,神木网站建设报价,网络营销,网络优化,神木网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
首先,是这样的,你要是只是想实现类似迅雷下载列表的功能,还是可以的,但是,要是在展现也就是说界面上的样子,也和迅雷的一样,那你就要自己重绘窗体还要结合美工技术才能做出来。
如果只是实现功能,可以看一下的讲解:
进度条的问题:如果只是一个进度条,那就不用多线程技术,因为只控制一个进度而已,如果向迅雷那样,实时的显示多个进度,那就要多个线程了,一个线程控制一个进度。
记录文档用何种方式:这个其实很简单,如果,你要是有数据库,那就最好存在数据库中,方便存储管理,网络数据库的话,有很多中,比如Mysql,oracle,本地数据有sqlite,access等,要是采用文件存储的话,可以用ini文件,xml文件或是简单点直接文本文件也是可以的。
下载完的记录加载到已完成列表,没下载完的记录自动加载到下载列表
其实这个也不难的,在控制进度的条的方法中,增加一if判断,如果能100%就将信息加载到完成列表,在判断中计数如果多次判断都没有进度,就认为文件现在失败,就在现在信息添加到未完成列表。
以上只是分析实现过程,实例的话,那会很多,也很复杂,以上内同纯手打,如果您觉得满意,请采纳我的回答,也不枉费我这么认真分析,多谢了。
下载,直接通过url读取文件,然后Response.OutputStream.Write()数据
下面提供个下载的静态方法,是C#的,供参考:
/// summary
/// 下载文件
/// /summary
/// param name="fileName"下载的文件名称(包括扩展名)/param
/// param name="filePath"下载文件的绝对路径/param
public static void DownFile(string fileName, string filePath)
{
//打开要下载的文件,并把该文件存放在FileStream中
System.IO.FileStream Reader = System.IO.File.OpenRead(filePath);
//文件传送的剩余字节数:初始值为文件的总大小
long Length = Reader.Length;
HttpContext.Current.Response.Buffer = false;
HttpContext.Current.Response.AddHeader("Connection", "Keep-Alive");
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.Charset = "utf-8";
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(fileName));
HttpContext.Current.Response.AddHeader("Content-Length", Length.ToString());
byte[] Buffer = new Byte[10000];//存放欲发送数据的缓冲区
int ByteToRead; //每次实际读取的字节数
while (Length 0)
{
//剩余字节数不为零,继续传送
if (HttpContext.Current.Response.IsClientConnected)
{
//客户端浏览器还打开着,继续传送
ByteToRead = Reader.Read(Buffer, 0, 10000); //往缓冲区读入数据
HttpContext.Current.Response.OutputStream.Write(Buffer, 0, ByteToRead);
//把缓冲区的数据写入客户端浏览器
HttpContext.Current.Response.Flush(); //立即写入客户端
Length -= ByteToRead;//剩余字节数减少 }
else
{
//客户端浏览器已经断开,阻止继续循环
Length = -1;
}
} //关闭该文件
Reader.Close();
}
QQ:121一九五五121
Dim strPath As String = Server.MapPath("xxx/xxx.xxx") '这里是你的文件路径以及名称后缀名,使用相对路径即可,不过记得路径最好是英文,用中文是否连接不到我就不知道了,记得是"/"哦! Page.Response.Clear() Page.Response.AddHeader("Content-Type", "text/xml") Page.Response.AddHeader("Content-Disposition", "attachment;filename=") Page.Response.WriteFile(strPath) Page.Response.End() 路径的话你可以使用变量的 所以这样一来需要下载的文件就会相当灵活 顺便附送一个删除文件的方法 System.IO.File.Delete(Server.MapPath("xxx/xxx.xxx")) 不过删除文件跟写文件是一样的 需要WEB服务器开启可写功能!、 好用的话记得给分哦 嘿嘿!
下载文件的话你要到这个名称空间找都这个函数
System.Net.WebClient.DownloadData(ByVal
String)
As
Byte(
)
--下载资源
DownloadData:
Public
Function
DownloadData(ByVal
address
As
String)
As
Byte(
)
System.Net.WebClient
的成员
摘要:
以
System.Byte
数组形式通过指定的
URI
下载资源。
参数:
address:
从中下载数据的
URI。
返回值:
一个
System.Byte
数组,其中包含下载的资源。
异常:
System.Net.WebException:
通过组合
System.Net.WebClient.BaseAddress
和
address
所构成的
URI
无效。-
或
-
下载数据时发生错误。
System.NotSupportedException:
该方法已在多个线程上同时调用。
System.Net.WebClient.DownloadFile(ByVal
String,
ByVal
String)
--下载文件
DownloadFile:
Public
Sub
DownloadFile(ByVal
address
As
String,
ByVal
fileName
As
String)
System.Net.WebClient
的成员
摘要:
将具有指定
URI
的资源下载到本地文件。
参数:
address:
从中下载数据的
URI。
fileName:
要接收数据的本地文件的名称。
异常:
System.Net.WebException:
通过组合
System.Net.WebClient.BaseAddress
和
address
所构成的
URI
无效。-
或
-
filename
为
null
或
System.String.Empty。-
或
-文件不存在。-
或
-
下载数据时发生错误。
System.NotSupportedException:
该方法已在多个线程上同时调用。