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

    技术2022-05-11  76

    最近作一个需求,要将移动服务器中的订购关系与话单数据同步到本地服务器.代码如下:

    using System;using FTP;

    namespace Syn{ /// <summary> /// Class1 的摘要说明。 /// </summary> class Download {  /// <summary>  /// 应用程序的主入口点。  /// </summary>  [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;  } }}

    引用部分需求如下:

    -----------------------------------------------------------------------------------------------------

    ⑴ 定购关系下载文件名 “ sc50141.20061220.sms.Z”或“sc50141.20061220.sms”     ⑵ 定购关系成功下载后和解压文件名         “ sc50141.20061220.sms.Z”        ⑶ 定购关系导入文件名         “ sc50141.20061220.sms” 其中“ sc”为省份标识,“20061220”为同步日期。        ⑷ 包月话单下载和第一次解压文件名     “ month901723.20061220.010.tar” ⑸ 包月话单第二次解压文件名     “ month901723.20061220214555.001010.0028.gz” ⑹ 包月话单导入文件名               “month901723.20061220214555.001010.0028 ”               其中“20061220214555”是话单时间,“0010”为省份标识。 ------------------------------------------------------------------------------------------------------ 林卡尔   http://hi.baidu.com/lmx88/blog

    最新回复(0)