C# -- 使用缓冲区进行文件下载操作
程序员文章站
2022-06-22 09:25:52
C#: 使用缓冲区进行文件下载操作,避免下载超大文件时内存占用过大 ......
c# -- 使用缓冲区进行文件下载操作
1. 为避免下载超大文件占用内存资源,文件下载使用缓冲区,一点一点读取文件资源。
string str0 = @"ftp://localhost:21/xx/1.txt"; string str1 = @"d:\2.txt"; ftpwebrequest ftpwebrequest1 = (ftpwebrequest)webrequest.create(str0); ftpwebrequest1.keepalive = false; ftpwebrequest1.method = webrequestmethods.ftp.getfilesize; ftpwebresponse ftpwebresponse1 = (ftpwebresponse)ftpwebrequest1.getresponse(); long icontentlength1 = ftpwebresponse1.contentlength; console.writeline("ftp file content length:{0}字节", icontentlength1); ftpwebrequest ftpwebrequest2 = (ftpwebrequest)webrequest.create(str0); ftpwebrequest2.method = webrequestmethods.ftp.downloadfile; ftpwebresponse ftpwebresponse2 = (ftpwebresponse)ftpwebrequest2.getresponse(); stream stream = ftpwebresponse2.getresponsestream(); filestream filestream = new filestream(str1, filemode.create); int buffersize = 2* 1024 * 1024; byte[] buffer = new byte[buffersize]; int iread = 0; iread = stream.read(buffer, 0, buffersize); while (iread > 0) { filestream.write(buffer, 0, iread); iread = stream.read(buffer, 0, buffersize); }
stream.close();
filestream.close();
fileinfo newfileinfo = new fileinfo(str1); long icontentlength2 = newfileinfo.length; console.writeline("download file content lenth:{0}字节", icontentlength2); console.writeline("文件校验:{0}", icontentlength1 == icontentlength2 ? "ok" : "文件大小不一样");
上一篇: Win11专业版虚拟机蓝屏怎么办
下一篇: 排序算法总结
推荐阅读
-
使用Numpy读取CSV文件,并进行行列删除的操作方法
-
Linux下如何使用ftp命令对文件传输进行操作
-
使用NumPy和pandas对CSV文件进行写操作的实例
-
C#中使用Path、Directory、Split、Substring实现对文件路径和文件名的常用操作实例
-
SQLSERVER 2005中使用sql语句对xml文件和其数据的进行操作(很全面)
-
webstorm/phpstorm配置连接ftp快速进行文件比较(上传下载/同步)操作
-
Asp.net(c#)常用文件操作类封装 移动 复制 删除 上传 下载等
-
使用Python进行稳定可靠的文件操作详解
-
C#操作xml文件:使用XmlDocument 实现读取和写入
-
【随笔系列】C#使用第三方SharpZipLib进行压缩、解压文件