SSIS 学习之旅 FTP访问类

这章把脚本任务访问FTP的方法 全部给大家。

控件的使用大家如果有不懂得可以看下我之前的文章。
第一章:SSIS 学习之旅 第一个SSIS 示例(一)(上)

第二章:SSIS 学习之旅 第一个SSIS 示例(二)

第三章:SSIS 学习之旅 数据同步

第四章:SSIS 学习之旅 FTP文件传输-FTP任务

第五章:SSIS 学习之旅 FTP文件传输-脚本任务

 

        #region 连接FTP服务器/// <summary>  /// 连接FTP服务器/// </summary>  /// <param name="FtpServerIP">FTP连接地址</param>  /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>  public string FTPHelper(string FtpServerIP, string FtpRemotePath){string ftpURI = "ftp://" + FtpServerIP + "/" + FtpRemotePath + "/";return ftpURI;}#endregion#region 文件上传FTP服务器/// <summary>/// 上传/// </summary>/// <param name="FilePathPendingAndName">文件详细路径</param>/// <param name="FTPUrl">FTPUrl</param>/// <param name="FTP_UserName">用户名</param>/// <param name="FTP_PWD">密码</param>public void Upload(string FilePathPendingAndName, string FTPUrl, string FTP_UserName, string FTP_PWD){FileInfo fileInf = new FileInfo(FilePathPendingAndName);FtpWebRequest reqFTP;reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(FTPUrl + fileInf.Name));reqFTP.Credentials = new NetworkCredential(FTP_UserName, FTP_PWD);reqFTP.Method = WebRequestMethods.Ftp.UploadFile;reqFTP.KeepAlive = false;reqFTP.UseBinary = true;reqFTP.ContentLength = fileInf.Length;int buffLength = 2048;byte[] buff = new byte[buffLength];int contentLen;FileStream fs = fileInf.OpenRead();try{Stream strm = reqFTP.GetRequestStream();contentLen = fs.Read(buff, 0, buffLength);while (contentLen != 0){strm.Write(buff, 0, contentLen);contentLen = fs.Read(buff, 0, buffLength);}strm.Close();fs.Close();}catch (Exception ex){throw new Exception(ex.Message);}}#endregion#region 下载文件/// <summary>/// 下载文件/// </summary>/// <param name="filePath">本地路径</param>/// <param name="fileName">文件名</param>/// <param name="ftpUrl">FTP链接路径</param>/// <param name="FTP_UserName">用户名</param>/// <param name="FTP_PWD">密码</param>public void Download(string filePath, string fileName, string ftpUrl, string FTP_UserName, string FTP_PWD){try{FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);FtpWebRequest reqFTP;reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpUrl + fileName));reqFTP.Credentials = new NetworkCredential(FTP_UserName, FTP_PWD);reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;reqFTP.UseBinary = true;FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();Stream ftpStream = response.GetResponseStream();long cl = response.ContentLength;int bufferSize = 2048;int readCount;byte[] buffer = new byte[bufferSize];readCount = ftpStream.Read(buffer, 0, bufferSize);while (readCount > 0){outputStream.Write(buffer, 0, readCount);readCount = ftpStream.Read(buffer, 0, bufferSize);}ftpStream.Close();outputStream.Close();response.Close();}catch (Exception ex){throw new Exception(ex.Message);}}#endregion#region 删除文件/// <summary> /// 删除文件 /// </summary> public void Delete(string fileName){try{FtpWebRequest reqFTP;reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;reqFTP.KeepAlive = false;string result = String.Empty;FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();long size = response.ContentLength;Stream datastream = response.GetResponseStream();StreamReader sr = new StreamReader(datastream);result = sr.ReadToEnd();sr.Close();datastream.Close();response.Close();}catch (Exception ex){throw new Exception(ex.Message);}}#endregion#region 获取当前目录下文件列表(不包括文件夹)/// <summary>/// 获取当前目录下文件列表(不包括文件夹)/// </summary>/// <param name="url">连接FTP服务器地址</param>/// <param name="ftpUserName">用户名</param>/// <param name="ftpPassword">密码</param>/// <returns></returns>public string[] GetFileList(string url, string ftpUserName, string ftpPassword){StringBuilder result = new StringBuilder();FtpWebRequest reqFTP;try{reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));reqFTP.UseBinary = true;reqFTP.Credentials = new NetworkCredential(ftpUserName, ftpPassword);reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;WebResponse response = reqFTP.GetResponse();StreamReader reader = new StreamReader(response.GetResponseStream());string line = reader.ReadLine();string FileName = "";while (line != null){if (line.IndexOf("<DIR>") == -1){FileName = "";FileName =  Regex.Match(line, @"(?<=IN)([.\S\s]*)(?=csv)", RegexOptions.IgnoreCase).Value.ToString() ;if (FileName.Trim() != ""){FileName = "IN" + FileName + "csv";result.Append(FileName + "|");}}line = reader.ReadLine();}//result.Remove(result.ToString().LastIndexOf('\n'), 1);
                reader.Close();response.Close();}catch (Exception ex){throw (ex);}return result.ToString().Split('|');}#endregion#region 判断当前目录下指定的文件是否存在/// <summary>  /// 判断当前目录下指定的文件是否存在  /// </summary>  /// <param name="RemoteFileName">远程文件名</param> public bool FileExist(string FTPUrl, string RemoteFileName, string FTP_UserName, string FTP_PWD){string FileName = "IN_NORMAL_" + Regex.Match(RemoteFileName, @"(?<=IN_NORMAL_)([.\S\s]*)(?=csv)", RegexOptions.IgnoreCase).Value.ToString() + "csv"; string[] fileList = GetFileList(FTPUrl, FTP_UserName, FTP_PWD);foreach (string str in fileList){if (str.Trim()==FileName.Trim()){return true;}}return false;}#endregion#region 更改文件名/// <summary>  /// 更改文件名  /// </summary> /// <param name="currentFilename">现有文件名称</param>/// <param name="newDirectory">新的文件名称</param>/// <param name="FTPUrl">FTPUrl</param>/// <param name="FTP_UserName">用户名</param>/// <param name="FTP_PWD">密码</param>public void ReName(string currentFilename, string newFilename, string FTPUrl, string FTP_UserName, string FTP_PWD){FtpWebRequest reqFTP;try{reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(FTPUrl + currentFilename));reqFTP.Method = WebRequestMethods.Ftp.Rename;reqFTP.RenameTo = newFilename;reqFTP.UseBinary = true;reqFTP.Credentials = new NetworkCredential(FTP_UserName, FTP_PWD);FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();Stream ftpStream = response.GetResponseStream();//File.Move()
                ftpStream.Close();response.Close();}catch (Exception ex){ }}#endregion#region 移动文件夹/// <summary>/// 移动文件夹/// </summary>/// <param name="currentFilename">现有文件名称</param>/// <param name="newDirectory">新的文件名称</param>/// <param name="FTPUrl">FTPUrl</param>/// <param name="FTP_UserName">用户名</param>/// <param name="FTP_PWD">密码</param>public void MovieFile(string currentFilename, string newDirectory,string FTPUrl, string FTP_UserName, string FTP_PWD){ReName(currentFilename, newDirectory, FTPUrl, FTP_UserName, FTP_PWD);}#endregion#region 创建文件夹 /// <summary> /// 创建文件夹 /// </summary>  public void MakeDir(string dirName){FtpWebRequest reqFTP;try{reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + dirName));reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;reqFTP.UseBinary = true;reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();Stream ftpStream = response.GetResponseStream();ftpStream.Close();response.Close();}catch (Exception ex){ }}#endregion#region 获取指定文件大小 /// <summary> /// 获取指定文件大小 /// </summary> public long GetFileSize(string filename){FtpWebRequest reqFTP;long fileSize = 0;try{reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + filename));reqFTP.Method = WebRequestMethods.Ftp.GetFileSize;reqFTP.UseBinary = true;reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();Stream ftpStream = response.GetResponseStream();fileSize = response.ContentLength;ftpStream.Close();response.Close();}catch (Exception ex){ }return fileSize;}#endregion

 

至此 SSIS 学习之旅 到这里就结束了。希望对大家的工作有所帮助吧。

 

转载于:https://www.cnblogs.com/yinsq/p/5482810.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud Feign 使用Apache的HTTP Client替换Feign原生httpclient

http 连接池能提升性能 http 的背景原理 a. 两台服务器建立 http 连接的过程是很复杂的一个过程&#xff0c;涉及到多个数据包的交换&#xff0c;并且也很耗时间。 b. Http 连接需要的 3 次握手 4 次分手开销很大&#xff0c;这一开销对于大量的比较小的 http 消息来说更大。…

Java容器坐标起点_Java的屏幕坐标是以像素为单位,容器的左下角被确定为坐标的起点...

【单选题】【单选题】【单选题】class A{ int x1; void func1(int x1){ this.x1 x1; } } 关于上述程序,说法错误的是( )【单选题】浏览器的作用是( )。【判断题】构建大学生心理危机预警及干预工作机制,更好地帮助有严重心理问题的学生度过心理难关,及早预防、及时疏导、有效干…

自媒体工具:文本内容转音频文件实用小工具

目录 ​编辑 1、软件介绍 2、软件技术框架 3、使用说明 4、核心代码文件 5、注意事项 1、软件介绍 文本内容转转音频文件小工具&#xff0c;采用C#编程语言&#xff0c;基于Framework4.5开发&#xff0c;主要采用百度语音识别SDK&#xff0c;实现了在线文本内容转音频文件的功能…

IDEA 创建 SpringCloud项目-多项目方式

SpringCloud 虽然可以用多模块化的方式来创建&#xff0c;但是&#xff0c;SpirngCloud本身就是为分布式而准备的&#xff0c;如果使用多模块的话&#xff0c;那就是一个项目&#xff0c;偏离了分布式的概念。所以工程上还是常用多项目的方式&#xff0c;这样才可以分开布署各个…

php位运算重要吗,PHP位运算的用途

下面为大家带来一篇PHP位运算的用途。现在就分享给大家&#xff0c;也给大家做个参考。一起过来看看吧在实际应用中可以做用户权限的应用我这里说到的权限管理办法是一个普遍采用的方法&#xff0c;主要是使用到”位运行符”操作&#xff0c;& 位与运算符、| 位或运行符。参…

盘点6款实用的文件对比工具,你都用过吗?

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

aggregations 详解1(概述)

aggregation分类 aggregations —— 聚合&#xff0c;提供了一种基于查询条件来对数据进行分桶、计算的方法。有点类似于 SQL 中的 group by 再加一些函数方法的操作。 聚合可以嵌套&#xff0c;由此可以组成复杂的操作&#xff08;Bucketing聚合可以包含sub-aggregation&#…

IDEA开发中,类的头位置生成作者时间信息

点击 File > Settings > File and Code Templates > Class按照图中步骤添加如下信息 #if (${PACKAGE_NAME} && ${PACKAGE_NAME} ! "")package ${PACKAGE_NAME};#end #parse("File Header.java") /** * Author WangZeyu * Date ${…

提现接口网站 php,API提现接口

>获取提现积分的类型&#xff0c;在后台可以设置某种积分可被提现&#xff0c;此处获取的数据为可提现积分的类型~~~[api]get:/index.php/accounts/Apipoint/member_withdrawal_listint:type 0#是否智能限制提现积分类型&#xff0c;0&#xff1a;不智能&#xff0c;1&#…

数据库:PostgreSQL 和 MySQL对比

比较版本&#xff1a;PostgreSQL 11 VS MySQL5.7&#xff08;innodb引擎&#xff09; Oracle官方社区版版权情况&#xff1a;PostgreSQL 11&#xff08;免费开源&#xff09;、MySQL5.7 Oracle官方社区版&#xff08;免费开源&#xff09; 1. CPU限制 PGSQL没有CPU核心数限制&a…

C#获取当前系统磁盘符、系统目录、桌面等

1.获取方式如下 Environment.SpecialFolder中定义了许多常用的目录 //获取当前系统磁盘符方法1&#xff0c;返回&#xff1a;C: string path Environment.GetEnvironmentVariable("systemdrive"); //获取当前系统磁盘符方法2,返回&#xff1a;C: string path Envir…

MAC电脑常用效率工具推荐

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

Java String类型转换成Date日期类型

//格式化数据 SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String format sdf.format(new Date()); System.out.println(format);//String格式的数据转化成Date格式 String timeStr "2019-07-09 03:34:56 "; Date parse sdf.pa…

docker php 安装swoole,swoole(1)使用docker安装swoole环境

1.下载镜像pull php 镜像docker pull php:7.3-alpine3.8创建容器docker run -it --name test php:7.3-alpine3.8 sh2.进入容器安装swoole# 安装依赖的第三方包echo http://mirrors.ustc.edu.cn/alpine/v3.7/main > /etc/apk/repositories && \echo http://mirrors.u…

插件书写示例

正常模态框代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wid…

MAC电脑8款常用设计工具推荐

目录 1、Sketch 3 2、Affinity Designer 3、Framer 4、PaintCode 5、Hype 3 Professional 6、Pixave 2 7、Iconjar 8、Sip for Mac and iPhone 1、Sketch 3 Sketch是完全满足我上面4条选择条件的一款UI设计工具&#xff0c;前文第50页已经提到过相关内容。 2、Affinity Designe…

matlab the installer cannot read,MATLAB安装 The installer cannot read the mwinstall.dll… | 学步园...

前提&#xff1a;安装前的文件 的 目录 不需含有 中文安装MATLAB7时弹出以下警告对话框&#xff0c;显示“ The installer cannot read the mwinstall.dll file, This is probably due to a CD reader which can only read files with an eight.three naming convention. Pleas…

专家观点:即使在云中 硬件同样至关重要

英特尔最近发布了新一代企业级CPU。第四代E5和E7CPU确实有些与众不同之处&#xff1a;更多的缓存、更多的内核、更快更多的RAM。但是大家没有发现这款产品还有一个特别的地方。 也许一切都与云有关&#xff0c;我们已经告别以前的硬件。你可能认为IT命令结构级别越高&#xff0…

matlab怎么安装compiler,关于MATLAB中compiler配置问题

按照大家的方法进行了系统配置&#xff0c;下载安装了SDK7.1&#xff0c;可运行mex setup之后还是一直弹出No supported SDK or compiler was found on this computer.Welcome to mex -setup. This utility will help you set upa default compiler. For a list of supported…

计算机硬件:内存条的基础知识笔记

在电脑硬件中&#xff0c;CPU、显卡、内存均三者是重中之重&#xff0c;所以我们在选择这些核心硬件一定要慎重。今天给大家分享一下关于的电脑内存基础知识&#xff0c;让更多的装机朋友们可以更好的学习内存相关知识。 史上最易懂的电脑内存基础知识 内存条的基本概念&#x…