star870126 发表于 2015-5-27 07:08:21

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

  最近作一个需求,要将移动服务器中的订购关系与话单数据同步到本地服务器.代码如下:
  using System;
using FTP;
  namespace Syn
{
///
/// Class1 的摘要说明。
///
class Download
{
///
/// 应用程序的主入口点。
///

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
页: [1]
查看完整版本: C#实现从FTP服务器下载压缩文件并解压.