关于FTP的操作类网上很多,并且功能很齐全,本文章主要是在下载过程中添加了进度显示,利用进度条实时的显示下载进度。

'********************************
' Function: FTP服务器下载有关的类
' Author: 要点理想色彩
' Createtime: 2018/07/23
' Remark:
'*******************************
Imports System.Net
Public Class FTP' 定义连接地址Private host As String' 用户名Private username As String' 密码Private password As String''' <summary>''' 创建带参数的构造方法''' </summary>''' <param name="IP">连接FTP服务器的IP地址,如果FTP的默认端口被更改,则需要将端口带上,例如:ftp://192.168.6.11:21</param>''' <param name="userName">用户名</param>''' <param name="psd">密码</param>''' <remarks></remarks>Private Sub New(ByVal IP As String, ByVal userName As String, ByVal psd As String)' 给类的变量赋值Me.host = IPMe.username = userNameMe.password = psdEnd Sub''' <summary>''' 下载文件;将Ftp服务器的文"remoteFile下载到本地的文件localFile''' </summary>''' <param name="localFile">本地的文件</param>''' <param name="remoteFile">Ftp服务器的文件</param>''' <remarks></remarks>Private Sub DownLoad(ByVal localFile As String, ByVal remoteFile As String)'获取指定文件的大小Dim filesize As Long = GetFileSize(remoteFile)' 定义统一资源标识符' remarks:RUI为统一资源标识符(Uniform Resource Identifier);RUL为统一资源定位符(Uniform Resource Location)Dim RUI As StringRUI = host & remoteFile' 创建FtpWebRequest类实例. ' remarks:因为FtpWebRequest.Create(RUI)创建的是 FtpWebRequest的父类WebRequest,因此需要进行类型转化Dim ftp As FtpWebRequestftp = CType(FtpWebRequest.Create(RUI), FtpWebRequest)' 添加通信凭证,通信凭据主要是用户名和密码ftp.Credentials = New NetworkCredential(username, password)' 设置传输方式, true,指示服务器要传输的是二进制数据;false,指示数据为文本。默认值为 true。' remarks: 关于传输方式的选取和文件类型有关,如果是文本类的就选择文本;其他的最好选择二进制,如果是' 压缩文件的话,选择文本传输会导致文件大小不一样,乱码都有可能。ftp.UseBinary = False' 定义Ftp操作的方法,操作方法有很多,例如下载,上传,获取详细列表,简单列表,文件大小ftp.Method = WebRequestMethods.Ftp.DownloadFile' 获取响应和响应流' remarks:此时本地程序才和FTP服务器建立起通信,防止错误,需要用TryDim response As FtpWebResponseDim responseStream As IO.StreamTryresponse = CType(ftp.GetResponse, System.Net.FtpWebResponse)Catch ex As ExceptionMsgBox("错误代码为:" & Err.Number & vbCrLf & "错误描述为: " & Err.Description)Exit SubEnd TryresponseStream = response.GetResponseStream' 创建本地的文件流Dim fs As New IO.FileStream(localFile, IO.FileMode.Create)' 创建字符传输的缓存大小Dim buffer(1024 * 1024 * 8) As ByteDim read As Integer = 0' 利用循环读取服务器响应流里面的内容到本地'  remarks利用文件的大小作为分母,可以在进度条里面实时的显示下载进度' 定义一个进度条Dim Progressbar1 As New System.Windows.Forms.ProgressBarDo' 读响应流read = responseStream.Read(buffer, 0, buffer.Length)' 写到本地fs.Write(buffer, 0, read)' 给进度条赋值Progressbar1.Value = fs.Length * 100 / filesize' 刷新进度条Progressbar1.Refresh()Loop Until read = 0' 将内存里面的缓存保存到硬盘中fs.Flush()' 本地的流fs.Close()' 关闭服务器的流responseStream.Close()' 关闭服务器响应response.Close()End Sub''' <summary>''' 获取FTP指定文件的大小''' </summary>''' <param name="remoteFile">FTp服务器的文件路径</param>''' <returns>长整型变量:文件的大小</returns>''' <remarks>写该函数的目的是在文件下载的时候,在字节流读的时候,利用已经读取的字节大小除以文件的大小,就可以获取下载的进度</remarks>Public Function GetFileSize(ByVal remoteFile As String) As Long'定义函数返回值Dim ret As Long = 0'创建FtpWebRequest类实例Dim URI As String = host & remoteFileDim ftp As System.Net.FtpWebRequest = CType(FtpWebRequest.Create(URI), FtpWebRequest)'设置ftp方法为获取文件的大小ftp.Method = System.Net.WebRequestMethods.Ftp.GetFileSize'设置请求完后销毁连接ftp.KeepAlive = False'设置传输类型为文本ftp.UseBinary = False'获取请求回应Dim ftpresponse As FtpWebResponseTryftpresponse = CType(ftp.GetResponse, System.Net.FtpWebResponse)Catch ex As ExceptionMsgBox("错误代码为:" & Err.Number & vbCrLf & "错误描述为: " & Err.Description)Return retEnd Try'获取文件长度ret = ftpresponse.ContentLength'关闭响应流ftpresponse.Close()'返回函数值Return retEnd Function
End Class

基于VB.Net的FTP操作的类(可以显示进度条)相关推荐

  1. java 单例基类_PHP基于单例模式实现的数据库操作基类

    本文实例讲述了PHP基于单例模式实现的数据库操作基类.分享给大家供大家参考,具体如下: 配置文件: $db = array( 'host'=>'localhost', 'user'=>'r ...

  2. 基于Jquery插件Uploadify实现实时显示进度条上传图片

    网址:http://www.jb51.net/article/83811.htm 这篇文章主要介绍了基于Jquery插件Uploadify实现实时显示进度条上传图片的相关资料,感兴趣的小伙伴们可以参考 ...

  3. linux ftp显示进度条,Shell中复制大文件显示进度

    "世间最痛苦的事莫过于等待..." 在Shell下进行大文件的复制时,常常要耗很长世间,这是一个相当乏味的过程,在GUI程序中常常会显示进度条或者完成百分比,但在Shell中如何来 ...

  4. 基于canvas 2D实现微信小程序自定义组件-环形进度条

    基于canvas 2D实现微信小程序自定义组件-环形进度条 最近开发一个小程序项目博闻金榜答题小程序,需要使用到一个可以显示答题倒计时的组件,基于进度条实现,下面就主要介绍基于canvas2D实现一个 ...

  5. Android FTP 客户端 上传/下载 带进度条实战源码

    Android FTP 开发,我个人是使用commons-net-3.1.jar,别问我为什么是度娘教我的,附上commons-net-3.1.jar的开源下载地址http://grepcode.co ...

  6. android编程任务进度条,Android应用开发之AsyncTask 处理耗时操作和显示进度条

    在Android中实现异步任务机制有两种,Handler和AsyncTask.优缺点自己百度,推荐使用AsyncTask. private ProgressDialog dialog; //新建一个对 ...

  7. linux ftp显示进度条,在Python中显示FTP下载进度(ProgressBar)

    我使用以下Python脚本通过FTP下载文件.我想要的是在下载时查看进度的详细信息.为此,我使用了ProgressBar但它没有显示任何内容. 这是我的代码: import re import os ...

  8. shell操作典型案例--FTP操作

    从FTP服务器上下载文件或上传文件到FTP服务器是生产环境中比较常见的场景之一. shell操作FTP的方式整理如下: 思路一:使用shell调用ftp等客户端 使用FTP方式,通过shell调用ft ...

  9. 基于腾讯 x5 开源库,提高 webView 开发效率,大概要节约你百分之六十的时间成本。该案例支持处理 js 的交互逻辑且无耦合、同时暴露进度条加载进度、可以监听异常 error 状态、支持视频播放

    YCWebView 项目地址:yangchong211/YCWebView 简介: 基于腾讯 x5 开源库,提高 webView 开发效率,大概要节约你百分之六十的时间成本.该案例支持处理 js 的交 ...

  10. 基于vue+element-ui实现上传进度条

    目录 基于el-upload组件实现进度条的编写 后台进度前台进度条显示 基于el-upload组件实现进度条的编写 ①编写文件上传时的钩子函数 uploadProgress(event,file,f ...

最新文章

  1. Github 标星 11.5K!这可能是最好的 Java 博客系统
  2. Mahout推荐算法API详解
  3. css 书写记录(兼容性)
  4. 一日千里 云计算普及势不可挡
  5. 如何建立论坛的核心用户--引发的思考
  6. ES5-13 对象属性遍历、this、callee、caller
  7. android 视图覆盖,如何在Android中添加覆盖视图超过其他视图?
  8. 【2016年第6期】专题:科学数据与创新应用
  9. py库: GUI(tkinter)
  10. 挑战微信、试探苹果?支付宝小程序可添加到 iOS 手机桌面
  11. smarty一维数组的引用
  12. 【机器学习】 - 决策树(西瓜数据集)
  13. 删除账户后开机仍然登陆刚被删除的账户的解决方法
  14. mysqld: File ‘./binlog.index‘ not found (OS errno 13 - Permission denied)
  15. 经典车间生产调度问题模型及其算法 目录
  16. 巴西龟饲养日志----肺炎治疗情况
  17. 人工智能领域顶会及期刊
  18. 【算法】牛顿迭代法求平方根的原理和误差分析
  19. 搭建自己的github.io博客
  20. stm32入门学什么板子_“蓝桥杯”嵌入式stm32开发入门(1)概述

热门文章

  1. bp神经网络回归预测模型(python实现)_bp神经网络预测代码python
  2. Nginx-详解其原理
  3. 人工鱼群算法python实现
  4. html+车牌号选择,html中车牌号省份简称输入键盘的示例代码
  5. OpenDDS系列(1) —— OpenDDS 简介
  6. linux嵌入式面试300问,经典嵌入式Linux面试题3问
  7. A Style-Aware Content Loss for Real-time HD Style Transfer(一个风格转换的风格感知损失)CVPR2018
  8. 水经注叠加cad_相见恨晚的50个CAD技巧
  9. MongoDB (芒果)安装说明创建与插入数据
  10. 东方通php支持,应用服务器TongWeb