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 = * * ;
byte[] Buffer = new byte[BufferSize]; int iRead = ;
iRead = stream.Read(Buffer, , BufferSize);
while (iRead > )
{
fileStream.Write(Buffer, , iRead);
iRead = stream.Read(Buffer, , 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" : "文件大小不一样");

C# -- 使用缓冲区进行文件下载操作的更多相关文章
- Vim 缓冲区与窗口 操作
##############缓冲区 :e(:open) 打开新缓冲区 :ls (:buffers) 列出列表内所有缓冲区/bs /bv /be(BufExplore快捷键) :b 2(:buffer ...
- Ajax请求文件下载操作失败的原因和解决办法
使用Poi做excel表格导出功能,第一个想到的就是用Ajax来发送请求,但是Ajax和后台代码都执行了,就是无法下载文件. 前台代码 function exportExl(){ var form = ...
- Java入门系列-23-NIO(使用缓冲区和通道对文件操作)
NIO 是什么 java.nio全称java non-blocking(非阻塞) IO(实际上是 new io),是指jdk1.4 及以上版本里提供的新api(New IO) ,为所有的原始类型(bo ...
- Linux0.11内核--缓冲区机制大致分析
文件系统的文件太多,而且是照搬的MINIX的文件系统,不想继续分析下去了.缓冲区机制和文件系统密切相关,所以这里就简单分析一下缓冲区机制. buffer.c 程序用于对高速缓冲区(池)进行操作和管理. ...
- PV操作
学习PV操作之前,我们首先来了解两个很基础的概念: 同步.互斥: 同步:其实说同步还不如说”协作“,就是我们的目标只有一个,我们奔着同一个目标去的,都是在大家的努力下共同完成这么一件事情.还是比较容易 ...
- 《Java核心技术卷二》笔记(二)文件操作和内存映射文件
文件操作 上一篇已经总结了流操作,其中也包括文件的读写.文件系统除了读写以为还有很多其他的操作,如复制.移动.删除.目录浏览.属性读写等.在Java7之前,一直使用File类用于文件的操作.Java7 ...
- 高效的两段式循环缓冲区──BipBuffer
Simon Cooke,美国 (原作者) 北京理工大学 20981 陈罡(翻译) 写在前面的话: 循环缓冲区是一个非常常用的数据存储结构,已经被广泛地用于连续.流数据的存储和通信应用中.对于循环缓冲区 ...
- 通过改变计算机策略来解决“只能通过Chrome网上应用商店安装该程序”的方法及模版文件下载
通过改变计算机策略来解决“只能通过Chrome网上应用商店安装该程序”的方法及模版文件下载 操作步骤 1.开始 -> 运行 -> 输入gpedit.msc -> 回车确定打开计算机本 ...
- c#操作Zip压缩文件
SharpZipLib 文件/文件夹压缩 一.ZipFile ZipFile类用于选择文件或文件夹进行压缩生成压缩包. 常用属性: 属性 说明 Count 文件数目(注意是在ComitUpdat之后才 ...
随机推荐
- 按照ID倒序查出某个字段不重复的集合
一.需求 有如下一个表pp_test: id name 1 aa 2 bb 3 cc 4 aa 5 cc 6 要求查出name字段中不重复的值(不算空值),并且按照id的倒序排列(不必输出ID). ...
- 5G,仅仅是更快的网速吗?
前不久参加了华为的Dev Summit 2020开发者大会,听到了关于5G的一些分享,刚好最近对5G有一些自己的思考,在此分享给大家. 什么是5G 在这里我不想列举各种晦涩难懂的术语,简单说来,5G就 ...
- oracle监听查看、启动和停止
oracle监听查看.启动和停止 查看监听lsnrctl status 停止监听lsnrctl stop 启动监听lsnrctl start
- NRF5340首款双核处理器无线SoC
nRF5340基于Nordic经过验证并在全球范围广泛采用的nRF51和nRF52系列多协议SoC而构建,同时引入了具有先进安全功能的全新灵活双处理器硬件架构,支持包括蓝牙5.1/低功耗蓝牙 (Blu ...
- POJ2528---Mayor's posters
The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign h ...
- protobuf 语法 与 protocol-buffers 的使用
前言 protocol-buffers 是 node.js 平台对支持 protobuf 封装的三方模块,下面的例子都通过 protocol-buffers 的使用来说明. 什么是protobuf G ...
- 【重温基础】15.JS对象介绍
从这篇文章开始,复习 MDN 中级教程 的内容了,在初级教程中,我和大家分享了一些比较简单基础的知识点,并放在我的 [Cute-JavaScript]系列文章中. 关于[Cute-JavaScript ...
- python学习-class对象
# 面向对象 python,java,c## 面向过程 C # 类和对象# 类 类型类别.类别 物以类聚 一类事物# 班级.人类.动物类.车.学生类.老师类.手机.电脑# 统称 == 共同特性# 不具 ...
- Kubernetes服务发现入门:如何高效管理服务?
愈发复杂的应用程序正在依靠微服务来保持可扩展性和提升效率.Kubernetes为微服务提供了完美的环境,并能够让其与Kubernetes的工具组件和功能兼容.当应用程序的每个部分放置在一个容器中,整个 ...
- XML字符串转为Map集合
public class xmlToMapUtils { /** * xml字符串转为map集合 * @param xmlStr * @return */ public static Map<S ...