• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#操作ftp类完整实例

C#操作ftp类完整实例

作者:我心依旧 字体:[增加 减小] 来源:互联网 时间:2017-05-28

我心依旧 通过本文主要向大家介绍了c站,c语言,欲情 c max,奔驰c200,85度c等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了C#操作ftp类。分享给大家供大家参考。具体如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
using System.Globalization;
namespace FtpTest1
{
 public class FtpWeb
 {
 string ftpServerIP;
 string ftpRemotePath;
 string ftpUserID;
 string ftpPassword;
 string ftpURI;
 /// <summary>
 /// 连接FTP
 /// </summary>
 /// <param name="FtpServerIP">FTP连接地址</param>
 /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>
 /// <param name="FtpUserID">用户名</param>
 /// <param name="FtpPassword">密码</param>
 public FtpWeb(string FtpServerIP, string FtpRemotePath, string FtpUserID, string FtpPassword)
 {
  ftpServerIP = FtpServerIP;
  ftpRemotePath = FtpRemotePath;
  ftpUserID = FtpUserID;
  ftpPassword = FtpPassword;
  ftpURI = "ftp://" + ftpServerIP + "/" ;
 }
 static void Main() {
  //string file = "c:\\aq3.gifa";
  //FileInfo fileInf = new FileInfo(file);
  //if (!fileInf.Exists)
  //{
  // Console.WriteLine(file + " no exists");
  //}
  //else {
  // Console.WriteLine("yes");
  //}
  //Console.ReadLine();
  FtpWeb fw = new FtpWeb("121.11.65.10", "", "aa1", "aa");
  string[] filePaths = { "c:\\aq3.gif1", "c:\\aq2.gif1", "c:\\bsmain_runtime.log" };
  Console.WriteLine(fw.UploadFile(filePaths));
  Console.ReadLine();
 }
 //上传文件
 public string UploadFile( string[] filePaths ) {
  StringBuilder sb = new StringBuilder();
  if ( filePaths != null && filePaths.Length > 0 ){
  foreach( var file in filePaths ){
   sb.Append(Upload( file ));
  }
  }
  return sb.ToString();
 }
  /// <summary>
 /// 上传文件
 /// </summary>
 /// <param name="filename"></param>
 private string Upload(string filename)
 {
  FileInfo fileInf = new FileInfo(filename);
  if ( !fileInf.Exists ){
  return filename + " 不存在!\n";
  }
  string uri = ftpURI + fileInf.Name;
  FtpWebRequest reqFTP;
  reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
  reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  reqFTP.KeepAlive = false;
  reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
  reqFTP.UseBinary = true;
  reqFTP.UsePassive = false; //选择主动还是被动模式
  //Entering Passive Mode
  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)
  {
  return "同步 "+filename+"时连接不上服务器!\n";
  //Insert_Standard_ErrorLog.Insert("FtpWeb", "Upload Error --> " + ex.Message);
  }
  return "";
 }
 /// <summary>
 /// 下载
 /// </summary>
 /// <param name="filePath"></param>
 /// <param name="fileName"></param>
 public void Download(string filePath, string fileName)
 {
  FtpWebRequest reqFTP;
  try
  {
  FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);
  reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));
  reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
  reqFTP.UseBinary = true;
  reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  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)
  {
  Insert_Standard_ErrorLog.Insert("FtpWeb", "Download Error --> " + ex.Message);
  }
 }
 /// <summary>
 /// 删除文件
 /// </summary>
 /// <param name="fileName"></param>
 public void Delete(string fileName)
 {
  try
  {
  string uri = ftpURI + fileName;
  FtpWebRequest reqFTP;
  reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
  reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  reqFTP.KeepAlive = false;
  reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;
  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)
  {
  Insert_Standard_ErrorLog.Insert("FtpWeb", "Delete Error --> " + ex.Message + " 文件名:" + fileName);
  }
 }
 /// <summary>
 /// 获取当前目录下明细(包含文件和文件夹)
 /// </summary>
 /// <returns></returns>
 public string[] GetFilesDetailList()
 {
  string[] downloadFiles;
  try
  {
  StringBuilder result = new StringBuilder();
  FtpWebRequest ftp;
  ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
  ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
  WebResponse response = ftp.GetResponse();
  StreamReader reader = new StreamReader(response.GetResponseStream());
  string line = reader.ReadLine();
  line = reader.ReadLine();
  line = reader.ReadLine();
  while (line != null)
  {
   result.Append(line);
   result.Append("\n");
   line = reader.ReadLine();
  }
  result.Remove(result.ToString().LastIndexOf("\n"), 1);
  reader.Close();
  response.Close();
  return result.ToString().Split('\n');
  }
  catch (Exception ex)
  {
  downloadFiles = null;
  Insert_Standard_ErrorLog.Insert("FtpWeb", "GetFilesDetailList Error --> " + ex.Message);
  return downloadFiles;
  }
 }
 /// <summary>
 /// 获取当前目录下文件列表(仅文件)
 /// </summary>
 /// <returns></returns>
 public string[] GetFileList(string mask)
 {
  string[] downloadFiles;
  StringBuilder result = new StringBuilder();
  FtpWebRequest reqFTP;
  try
  {
  reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
  reqFTP.UseBinary = true;
  reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
  WebResponse response = reqFTP.GetResponse();
  StreamReader reader = new StreamReader(response.GetResponseStream());
  string line = reader.ReadLine();
  while (line != null)
  {
   if (mask.Trim() != string.Empty && mask.Trim() != "*.*")
   {
   string mask_ = mask.Substring(0, mask.IndexOf("*"));
   if (line.Substring(0, mask_.Length) == mask_)
   {
    result.Append(line);
    result.Append("\n");
   }
   }
   else
   {
   result.Append(line);
   result.Append("\n");
   }
   line = reader.ReadLine();
  }
  result.Remove(result.ToString().LastIndexOf('\n'), 1);
  reader.Close();
  response.Close();
  return result.ToString().Split('\n');
  }
  catch (Exception ex)
  {
  downloadFiles = null;
  if (ex.Message.Trim() != "远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)。")
  {
   Insert_Standard_ErrorLog.Insert("FtpWeb", "GetFileList Error --> " + ex.Message.ToString());
  }
  return downloadFiles;
  }
 }
 /// <summary>
 /// 获取当前目录下所有的文件夹列表(仅文件夹)
 /// </summary>
 /// <returns></returns>
 public string[] GetDirectoryList()
 {
  string[] drectory = GetFilesDetailList();
  s



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C# 检索不区分大小写并高亮显示实例详解
  • C#实现Base64处理的加密解密,编码解码示例
  • C# SqlHelper应用开发学习
  • C#多线程经典示例(吃苹果)
  • C#使用Windows Service的简单教程(创建、安装、卸载、调试)
  • C# 6.0 的知识梳理
  • C#向PPT文档插入图片以及导出图片的实例
  • C#使用Jquery zTree实现树状结构显示 异步数据加载
  • C#清理非托管对象实例分析
  • C#双缓冲技术实例详解

相关文章

  • 2017-05-28Base64编码解码原理及C#编程实例
  • 2017-05-28解析C#面向对象编程中方法(method)的使用
  • 2017-05-28C#对称加密与非对称加密实例
  • 2017-05-28C#中除去所有在HTML元素中标记
  • 2017-05-28C# 注册表 操作实现代码
  • 2017-05-28js验证电话号码手机号码的正则表达式
  • 2017-05-28C#中TreeView节点的自定义绘制方法
  • 2017-05-28C#简单的通用基础字典实现方法
  • 2017-05-28C#实现将像素转换为页面单位的方法
  • 2017-05-28C#根据年月日计算星期几的函数

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#实现字符串倒序的写法
    • C#多线程编程之使用ReaderWriterLock类实现多用户读与单用户写同步的方法
    • C#中使用DataContractSerializer类实现深拷贝操作示例
    • 创建execl导入工具类的步骤
    • C#利用正则判断输入是否为纯数字、容器类
    • C#中IEnumerable接口用法实例分析
    • C#实现图片放大功能的按照像素放大图像方法
    • C# string格式的日期时间字符串转为DateTime类型的方法
    • C#中常用的正则表达式实例
    • C# Base64编码函数

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有