设为首页 收藏本站
查看: 1144|回复: 0

C#实现从FTP服务器下载压缩文件并解压.

[复制链接]

尚未签到

发表于 2015-5-27 07:08:21 | 显示全部楼层 |阅读模式
  最近作一个需求,要将移动服务器中的订购关系与话单数据同步到本地服务器.代码如下:
  using System;
using FTP;
  namespace Syn
{
///
/// Class1 的摘要说明。
///
class Download
{
  ///
  /// 应用程序的主入口点。
  ///
  [STAThread]
  static void Main(string[] args)
  {
   //
   // TODO: 在此处添加代码以启动应用程序
   //
   Download d = new Download();
   d.GetFile();
  }
  private FtpClient ftpClient = null;
  private string mSelectFile = string.Empty;
  public void GetFile()
  {
   ftpClient = new FtpClient("FTP地址","/","用户名","密码",21,FtpClient.FtpMode.Active);
   try
   {
    ftpClient.Connect();
    if(ftpClient.Connected)
    {
     string [] files = ftpClient.Dir("*.*");
     string type = "";
     string size = "";
     string name = "";
  foreach(string file in files)
     {
      if(file == "")
       break;
     
      if(ftpClient.SystemType == FtpClient.FtpSystemType.UNIX)
      {
       size = GetSubString(file, 4);
     
       name = GetSubString(file, 8);
      
       System.Console.WriteLine("Unix文件名:"+name);
      
       if(!name.StartsWith("."))
       {
        ftpClient.Get(name,".","");
        try
        {
         System.Diagnostics.Process.Start("cmd","/c winrar e -ad "+name);
        }
        catch(System.ComponentModel.Win32Exception e)
        {
         System.Console.WriteLine(name+"-解压出错:"+ e.ToString());
        }
       }
      }
      else
      {
       System.Console.WriteLine("Win文件名:"+file);
      }      
     }
     ftpClient.DisConnect();
     
  
    }
    else
    {
     System.Console.WriteLine("连接FTP服务器失败!");
    }
   }
   catch(Exception ex){
    System.Console.WriteLine(ex.Message);
   }
  }
  private string GetSubString(string strRecord, int nSub)
  {
   int nIndex = 0;
   int nPos = 0;
   int nLen = 0;
   string str = strRecord;
   while(nIndex < nSub)
   {
    nPos = 0;
    nLen = 0;
    nPos = str.IndexOf(' ');
    str = str.Substring(nPos).TrimStart(new char[]{' '});
    nLen = str.IndexOf(' ');
    nIndex++;
   }
   if(nSub == 8)
    str = str.Substring(0).TrimEnd();
   else
    str = str.Substring(0, nLen);
   return str;
  }
}
}

  引用部分需求如下:
  -----------------------------------------------------------------------------------------------------

⑴ 定购关系下载文件名
&#8220;sc50141.20061220.sms.Z&#8221;或&#8220;sc50141.20061220.sms&#8221;
    ⑵ 定购关系成功下载后和解压文件名
        &#8220;sc50141.20061220.sms.Z&#8221;
       ⑶ 定购关系导入文件名
        &#8220;sc50141.20061220.sms&#8221;
其中&#8220;sc&#8221;为省份标识,&#8220;20061220&#8221;为同步日期。
       ⑷ 包月话单下载和第一次解压文件名
    &#8220;month901723.20061220.010.tar&#8221;
⑸ 包月话单第二次解压文件名
    &#8220;month901723.20061220214555.001010.0028.gz&#8221;
⑹ 包月话单导入文件名
              &#8220;month901723.20061220214555.001010.0028&#8221;
              其中&#8220;20061220214555&#8221;是话单时间,&#8220;0010&#8221;为省份标识。
------------------------------------------------------------------------------------------------------


林卡尔  http://hi.baidu.com/lmx88/blog

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-70976-1-1.html 上篇帖子: FTP组件edtFTPj 下篇帖子: C# FTP 命令无法获取ServerU目录列表问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表