|
最近作一个需求,要将移动服务器中的订购关系与话单数据同步到本地服务器.代码如下:
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;
}
}
}
引用部分需求如下:
-----------------------------------------------------------------------------------------------------
⑴ 定购关系下载文件名
“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 |
|
|