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