当前位置: 移动技术网 > IT编程>开发语言>.net > C# -- 使用缓冲区进行文件下载操作

C# -- 使用缓冲区进行文件下载操作

2019年07月23日  | 移动技术网IT编程  | 我要评论

聚微商,国家海洋局局长,镇江天气预报查询

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" : "文件大小不一样");

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网