C# -- 使用缓冲区进行文件下载操作
程序员文章站
2022-03-11 08:37:51
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" : "文件大小不一样");
推荐阅读
-
webstorm/phpstorm配置连接ftp快速进行文件比较(上传下载/同步)操作
-
C#使用自定义算法对数组进行反转操作的方法
-
C#使用WinRar命令进行压缩和解压缩操作的实现方法
-
在Linux中使用命令行进行文件覆盖的操作
-
使用Numpy读取CSV文件,并进行行列删除的操作方法
-
Linux下如何使用ftp命令对文件传输进行操作
-
使用NumPy和pandas对CSV文件进行写操作的实例
-
C#中使用Path、Directory、Split、Substring实现对文件路径和文件名的常用操作实例
-
SQLSERVER 2005中使用sql语句对xml文件和其数据的进行操作(很全面)
-
webstorm/phpstorm配置连接ftp快速进行文件比较(上传下载/同步)操作