以下代码 使用.net FtpWebRequest 实现FTP的常用功能, 代码已经调试通过, 可复制直接使用。 经测试使用此种方式实现的FTP操作与直接使用命令的方式操作FTP要稳定许多。 有设计不好的地方请指正。 using System; RYWo})E[3K Tg0using System.Collections.Generic; }k'LQ BB-_d0using System.Text;ITPUB个人空间1/T0y(zzz~3{~7B using System.IO; -Y1|q"_#M3R's-i0using System.Net;ITPUB个人空间0q8v/jo,od'~~ using System.Windows.Forms;ITPUB个人空间d:~Kt){rs%l o using System.Globalization; namespace FtpTest1 s;k5Kbx%c0{ public class FtpWebITPUB个人空间y(HM6HT { 'ZxpQLCC&G%C;S0 string ftpServerIP;ITPUB个人空间 ~)i glX{vT string ftpRemotePath; 4ha;o-lKg#~u X0 string ftpUserID; $a4ruEC0 string ftpPassword; -tbciU Y0 string ftpURI; /// <summary> %g ?+Y*BX P0 /// 连接FTPITPUB个人空间"O'{7@'J1I.EW$k /// </summary>ITPUB个人空间4r(N|8Mq4V$ny*K A /// <param name="FtpServerIP">FTP连接地址</param>ITPUB个人空间G+hkN`s E4? /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>ITPUB个人空间'h,Sf&yv.[{ /// <param name="FtpUserID">用户名</param>ITPUB个人空间%[lE0G!Ji(b9onO /// <param name="FtpPassword">密码</param>ITPUB个人空间'hy#L`WN public FtpWeb(string FtpServerIP, string FtpRemotePath, string FtpUserID, string FtpPassword)ITPUB个人空间 BO3DECq&~ {ITPUB个人空间.^&S em s BL ftpServerIP = FtpServerIP; 4x%dT"U.J}.H0 ftpRemotePath = FtpRemotePath; PF#]?%XO0 ftpUserID = FtpUserID;ITPUB个人空间d/m]!G`w4L%S ftpPassword = FtpPassword; 1R8/r{fM&g{0 ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";ITPUB个人空间6}(n'aJ{2]/G"lgO } /// <summary>ITPUB个人空间u9b:u M lVl,p /// 上传ITPUB个人空间#w.O'M:W'y h%O'J`2h /// </summary> %JGr b q!Na1Iz(N0 /// <param name="filename"></param>ITPUB个人空间iih1P7dv[ public void Upload(string filename) t1?3qWB(yO0 {ITPUB个人空间-Um2HOf FileInfo fileInf = new FileInfo(filename); sF-BO5YQ+bS7fs0 string uri = ftpURI + fileInf.Name; $_&N(Q@/k'h+t0 FtpWebRequest reqFTP; reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));ITPUB个人空间Sm'KRUS5Ot reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);ITPUB个人空间)G(Yw6|A V3RI_ reqFTP.KeepAlive = false;ITPUB个人空间r2bnHt reqFTP.Method = WebRequestMethods.Ftp.UploadFile; 'D6U!W0b4p/l3k#o.?0 reqFTP.UseBinary = true;ITPUB个人空间-ZZ,@4V_8} reqFTP.ContentLength = fileInf.Length; ;i5q+h;d*ef0 int buffLength = 2048;ITPUB个人空间Rq^7l.K byte[] buff = new byte[buffLength]; 4F N*O#ow W$Q0 int contentLen; $~,~0V D~QlS~0 FileStream fs = fileInf.OpenRead();ITPUB个人空间t'O#pSJ h+^%b try 3g[!]@r7N&J0 {ITPUB个人空间%Ca"V+M[G&z/pS8z Stream strm = reqFTP.GetRequestStream();ITPUB个人空间&N!b6V'ra#gw ^ contentLen = fs.Read(buff, 0, buffLength);ITPUB个人空间+c;X~0yD E while (contentLen != 0) |J-c4U)T7r0 { vi8Ktq(Q4j7?B0 strm.Write(buff, 0, contentLen); a-q&m z&QSp2I:Y-N0 contentLen = fs.Read(buff, 0, buffLength); 6s7w*W2qo0 } $E}C*g)AG z0 strm.Close();ITPUB个人空间d1q-aQS fs.Close(); fns a&~ c%s ?0 }ITPUB个人空间JI$irU(IE%^ catch (Exception ex) w9? d/?8x]0 { wO,ci!utj0 Insert_Standard_ErrorLog.Insert("FtpWeb", "Upload Error --> " + ex.Message);ITPUB个人空间/mB9w lGH:I7t~ } ,V&r0lxZl|fov&Zt0 } /// <summary> 8u'FTS mq0 /// 下载 b r!mD!f[ ` v9`0 /// </summary>ITPUB个人空间A6ug2H$_ z#{+c#S /// <param name="filePath"></param> 7?Azf3Hy J0 /// <param name="fileName"></param> H+T2J&QB ~.Af+M0 public void Download(string filePath, string fileName)ITPUB个人空间.m+e%Mb4f { {^ sUR~8m0 FtpWebRequest reqFTP;ITPUB个人空间n:`N.Ai,{2b6_ w try T LBu{el^7R jC/t0 {ITPUB个人空间5|^ McfpI-tz3A M3A FileStream utputStream = new FileStream(filePath + "//" + fileName, FileMode.Create); reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));ITPUB个人空间1zQ@ eV4n reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;ITPUB个人空间5Z"I:bmu B reqFTP.UseBinary = true;ITPUB个人空间6S)x{]#`h7I reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword); (uqP%s4U Cf2H0 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); vk(FY h0 Stream ftpStream = response.GetResponseStream(); x }9Rek5Pm W0 long cl = response.ContentLength; int bufferSize = 2048; n TrX$|K7~}8T0 int readCount; @v4CVG}0 byte[] buffer = new byte[bufferSize]; readCount = ftpStream.Read(buffer, 0, bufferSize);ITPUB个人空间@j!G+Xv/y9`P while (readCount > 0)ITPUB个人空间7BkNT^ k3Z'F)U&CUoD#h { w(?.i NW0 outputStream.Write(buffer, 0, readCount);ITPUB个人空间r8I/a I6vt Xu readCount = ftpStream.Read(buffer, 0, bufferSize);ITPUB个人空间 C$| p9{7g5np } ftpStream.Close();ITPUB个人空间!hP!IGJ9ov outputStream.Close();ITPUB个人空间|XWH N4q/la response.Close();ITPUB个人空间9X;BB'HA%?g^/] } [[ G5} _+xw*tX/_0 catch (Exception ex) *DM/w^"Kk9} fp0 {ITPUB个人空间%kCH aF/D Insert_Standard_ErrorLog.Insert("FtpWeb", "Download Error --> " + ex.Message); HQ*?bd _&eR0 }ITPUB个人空间 /P ]ZP` } /// <summary>ITPUB个人空间Y$gc&iTW,L /// 删除文件ITPUB个人空间T7F^2p"W,];vWO /// </summary> "j7S0@ HcJ1l#L E u/0 /// <param name="fileName"></param>ITPUB个人空间I C,T F0kpC public void Delete(string fileName)ITPUB个人空间[Bgjj-B3K_/D {ITPUB个人空间zM4]7fMM~I tryITPUB个人空间Rl!kl-C/s {ITPUB个人空间SZtx%? string uri = ftpURI + fileName; *q;]#ixabST0 FtpWebRequest reqFTP;ITPUB个人空间Y4uf6?+~8z(h v^8d reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri)); reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);ITPUB个人空间.{0d n_ uS(FU reqFTP.KeepAlive = false; (TM'Sb n4`3}JI9^B0 reqFTP.Method = WebRequestMethods.Ftp.DeleteFile; string result = String.Empty; /,?Hk"y(~U[ d0 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();ITPUB个人空间cy)dZAEk8A B long size = response.ContentLength;ITPUB个人空间_D Jv*MSi2bx Stream datastream = response.GetResponseStream();ITPUB个人空间4VSEy"C4@ gJZ StreamReader sr = new StreamReader(datastream); "Z,nNZ+a$z0 result = sr.ReadToEnd();ITPUB个人空间 Pg6kPT0Ex5e4O ~ sr.Close(); 8m8B)l$_ifH"w'Y+w0 datastream.Close(); !}*`ka8/Z:j0 response.Close();ITPUB个人空间u-Xwda w }ITPUB个人空间QOPdbyey catch (Exception ex)ITPUB个人空间Rh8Y.so*u8u @,B)s {ITPUB个人空间.oi2w7uvu-b Insert_Standard_ErrorLog.Insert("FtpWeb", "Delete Error --> " + ex.Message + " 文件名:" + fileName); ^;g.Z]3WR7kG9o,i0 }ITPUB个人空间Ap sF}vVH'I1m } /// <summary>ITPUB个人空间!MG]%V{)ih1Y G /// 获取当前目录下明细(包含文件和文件夹)ITPUB个人空间 @t&{ gr^k1T /// </summary> Wv C7/Q?p1H6s0 /// <returns></returns>ITPUB个人空间W4A _+bC public string[] GetFilesDetailList() :MIcDC!XY H)f] JL0 {ITPUB个人空间j;TyiK2k string[] downloadFiles;ITPUB个人空间;_B3N$DlP tryITPUB个人空间 Jj%P$^p { %JqN'bP IH0 StringBuilder result = new StringBuilder();ITPUB个人空间6P,AYdSeS FtpWebRequest ftp; fl5JX_pe0 ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI)); 5o _1Y.^v4/{f5@.O0 ftp.Credentials= new NetworkCredential(ftpUserID, ftpPassword);ITPUB个人空间q9y+]l'}2h!y Fw ftp.Method= WebRequestMethods.Ftp.ListDirectoryDetails;ITPUB个人空间,I c9u Q6W5F WebResponse response =ftp.GetResponse(); 6z+q.lbs,A:L0 StreamReader reader = new StreamReader(response.GetResponseStream());ITPUB个人空间?S8l@EOK{ string line = reader.ReadLine(); / t [M-}/s}E0 line = reader.ReadLine(); k PZ`,is0 line = reader.ReadLine();ITPUB个人空间#OU#i{u g'F h while (line != null)ITPUB个人空间,m2U&d`$d @{%H3ck3o {ITPUB个人空间J"X{ PGD W"a%c result.Append(line); D.Z&? kyQ#l0 result.Append("/n"); result.Remove(result.ToString().LastIndexOf("/n"), 1);ITPUB个人空间8i@}i`8O{ reader.Close(); #H@;uph;Wi-O0 response.Close();ITPUB个人空间;]ET0r"L-u)b,I return result.ToString().Split('/n');ITPUB个人空间v iY[_ }ITPUB个人空间@5Y(UI:q JQ#d catch (Exception ex) `[U./H@&[ {0 {ITPUB个人空间*eO5wwa1`8C downloadFiles = null; ]q{J`aW|7UX0 Insert_Standard_ErrorLog.Insert("FtpWeb", "GetFilesDetailList Error --> " + ex.Message);ITPUB个人空间x8oaq~iA} return downloadFiles;ITPUB个人空间]p[?-pA9|M:] } 5b;Q3m5dp Z0 } /// <summary> )p{Dtg$U yUkns0 /// 获取当前目录下文件列表(仅文件) A%lM cs:W0 /// </summary>ITPUB个人空间Qjf,jtT+? /// <returns></returns> }APP6N%j9Q4x0 public string[] GetFileList(string mask)ITPUB个人空间4}3q(z"R c(NR { aO2ZcP0 string[] downloadFiles;ITPUB个人空间#G z^J_ugV*p StringBuilder result = new StringBuilder();ITPUB个人空间X|@`HYC@+F FtpWebRequest reqFTP;ITPUB个人空间9u2` XGq8K9Q%A try 3^ Un-?e*L w0 {ITPUB个人空间f UU_.dJ reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI)); YbRuS1CK4A"/0 reqFTP.UseBinary = true;ITPUB个人空间2W D1n/](vu/v.lB reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword); Jesf-R6//F(w0 reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;ITPUB个人空间D5B w%ub/[,[ WebResponse response = reqFTP.GetResponse(); i4ya }c(p0 StreamReader reader = new StreamReader(response.GetResponseStream()); string line = reader.ReadLine();ITPUB个人空间M6?;P'{S3s while (line != null)ITPUB个人空间 v*G#R7z KN/ {ITPUB个人空间[ Keen4U oN if (mask.Trim() != string.Empty && mask.Trim() != "*.*")ITPUB个人空间5?8K8xx^S { -jN#SArbw.R0 string mask_ = mask.Substring(0, mask.IndexOf("*")); +KE?CW0 if (line.Substring(0, mask_.Length) == mask_)ITPUB个人空间iFe3c)t(pG^%O {ITPUB个人空间Gi+WCE9JEL x result.Append(line);ITPUB个人空间E)H*P+R&H5yg Y%y result.Append("/n"); +Xu)`z&i T2W:f?0 } 7?|z5fJ0 } 8Z2f#y&yf0 else g%`%M(R4eP0 { /Y`"Z&F/jl0 result.Append(line);ITPUB个人空间V$z3W6L8r_*M'D result.Append("/n"); X.dy&br,c0 }ITPUB个人空间5M$Q y5mw2yR7L&E line = reader.ReadLine();ITPUB个人空间#g5PVa}9a } 4@-T2EU`.~k0 result.Remove(result.ToString().LastIndexOf('/n'), 1); Cv-y!J(tB8[0 reader.Close();ITPUB个人空间cvh([HgG response.Close();ITPUB个人空间c5R3wo:H0X return result.ToString().Split('/n');ITPUB个人空间+oy3IT@D8F@ }ITPUB个人空间 /w2I RZb.{ catch (Exception ex) l^4g*`e{0 {ITPUB个人空间s(C z0IZ)Y){ downloadFiles = null;ITPUB个人空间6IDC,u_@:A(BG!X if (ex.Message.Trim() != "远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)。")ITPUB个人空间!Y:LyC+?jf~{3K2h {ITPUB个人空间2y|"UC(GM Insert_Standard_ErrorLog.Insert("FtpWeb", "GetFileList Error --> " + ex.Message.ToString());ITPUB个人空间Yio@k }ITPUB个人空间$lq9P DL5cp"Sg M return downloadFiles;ITPUB个人空间N$y1C9Fm J8Y { }ITPUB个人空间d.S_Jg0XYZ } /// <summary> #fH J QO f/n n.zi0 /// 获取当前目录下所有的文件夹列表(仅文件夹)ITPUB个人空间qPp vs /// </summary> wer:d9q;fwb0 & nbsp; /// <returns></returns>ITPUB个人空间uF2t2B&uB public string[] GetDirectoryList() o:hd"G5WM0 {ITPUB个人空间pM,] J"Ukw Ya string[] drectory = GetFilesDetailList();ITPUB个人空间'W6S cd B/c.{8T string m = string.Empty;ITPUB个人空间YEv)O4D K{F0k foreach (string str in drectory) )`5G,u7vS(V*Yl0 { -wjAg2@W0 if (str.Trim().Substring(0, 1).ToUpper() == "D") 2N*|6d MoF0 { 1TK5oi?9US0s0 m += str.Substring(54).Trim() + "/n";ITPUB个人空间1r-|8d'I Q[n }ITPUB个人空间&E^Y*q W } char[] n = new char[]{'/n'};ITPUB个人空间k@#Li vY return m.Split(n);ITPUB个人空间Ss^jhC:f }ITPUB个人空间7OVHPvbw ITPUB个人空间5gq Jjc,R /// <summary> k`e!/0F0 /// 判断当前目录下指定的子目录是否存在ITPUB个人空间#cj{ m.J-GU /// </summary> 7l'S;V+F*on*I)p0 /// <param name="RemoteDirectoryName">指定的目录名</param>ITPUB个人空间#v5W_._8C bk;n` public bool DirectoryExist(string RemoteDirectoryName) )R/^&jo"s"{?+N0 {ITPUB个人空间#m`6[+^%h E string[] dirList = GetDirectoryList();ITPUB个人空间9j%L$_u~ M foreach (string str in dirList) %KK e-wWl R0H0 {ITPUB个人空间tc2?#zoq5p if (str.Trim() == RemoteDirectoryName.Trim())ITPUB个人空间 ~mlr;Z%GB-u | {ITPUB个人空间!Y1z8q%N*yLL,T5n return true; *RA%X#m` |1g;H0 }ITPUB个人空间-V?3n"K/{)w(v5[ }ITPUB个人空间4v!y ]8Q{/k T return false; 'g:|Y skv(/I0 } /// <summary>ITPUB个人空间%as*Wc6Bskq+d /// 判断当前目录下指定的文件是否存在ITPUB个人空间 T'v(tly /|'N)@k /// </summary>ITPUB个人空间B*N!n*s/ GHnx /// <param name="RemoteFileName">远程文件名</param> ?6i`5Lk)~3}0 public bool FileExist(string RemoteFileName) b-PBLfRoF0 {ITPUB个人空间 Bf8U? S+XQ qI.x string[] fileList = GetFileList("*.*"); *jNq3Ma2x/h-J0 foreach (string str in fileList)ITPUB个人空间B;V'F7^yvYC f C {ITPUB个人空间tTK)jg#B e if (str.Trim() == RemoteFileName.Trim()) ]d;c.Sg!r0 { {*K.M}*n2PR0 return true; .dD%E)y1s0 } bN W1T6a)h0 }ITPUB个人空间b7_N3a4~ NSvc return false;ITPUB个人空间LLP-NZ_ } /// <summary>ITPUB个人空间"Z5Z9A|)Y9i$B1A /// 创建文件夹ITPUB个人空间,M3~ N9BkCi /// </summary> g)z-F y po/ E3z0D0 /// <param name="dirName"></param>ITPUB个人空间^EdqE:n4cBi public void MakeDir(string dirName)ITPUB个人空间4sm:U.O0b`'j4[ {ITPUB个人空间(nO /o:~B%pY FtpWebRequest reqFTP;ITPUB个人空间 c|QY] try k-xE2|;[ ~)AGj0 {ITPUB个人空间;h x i)P-x3^!@,`M // dirName = name of the directory to create.ITPUB个人空间g fSP'Q reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + dirName));ITPUB个人空间 J6x efj2X Q reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory; p2C/0/ M$?0 reqFTP.UseBinary = true; vT&LP-}0 reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);ITPUB个人空间F ld"l0GV%p` FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); 9F s7G#O2X N_m~,yF0 Stream ftpStream = response.GetResponseStream(); ftpStream.Close(); x c6eR*i6iMy0 response.Close(); C#X;g^@~ g0 }ITPUB个人空间!XX g oL-z} YH catch (Exception ex)ITPUB个人空间+y(H5wh$gq'Q { .an.g*ll0k[0 Insert_Standard_ErrorLog.Insert("FtpWeb", "MakeDir Error --> " + ex.Message); Y_6S*f!b0 } ?&` QsgnT!I0 } /// <summary> a5oK"OC3V1mUR0 /// 获取指定文件大小 j J]iA&Cv0 /// </summary>ITPUB个人空间 nTys(}#ON-a /// <param name="filename"></param>ITPUB个人空间V8bF ]XY k /// <returns></returns> T_uf[9k0 public long GetFileSize(string filename) eV2? R$Y(~&k0 {ITPUB个人空间 I5/-A]7[V FtpWebRequest reqFTP;ITPUB个人空间,mx7AiJ long fileSize = 0;ITPUB个人空间a^`WN.Q try K K3{4]O0 {ITPUB个人空间_*} B9? Sm reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + filename));ITPUB个人空间 tK+i1U p&uh reqFTP.Method = WebRequestMethods.Ftp.GetFileSize; ; reqFTP.UseBinary = true;ITPUB个人空间hwvn w2q:?3e JS reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword); kw6V n(x,y?(PH$q0 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();ITPUB个人空间@ V,^ na:T2dB Stream ftpStream = response.GetResponseStream(); +f3Y D n8R8U0 fileSize = response.ContentLength; ftpStream.Close();ITPUB个人空间t4g4qa ab^M response.Close();ITPUB个人空间E#i,agz h!w } j+dY F/IwC@%M%{0 catch (Exception ex)ITPUB个人空间+Uae5og$` {ITPUB个人空间g K5HYBA Insert_Standard_ErrorLog.Insert("FtpWeb", "GetFileSize Error --> " + ex.Message);ITPUB个人空间 hd;~?(Q5Xo } y J7U(ya1{^0 return fileSize;ITPUB个人空间E zM Hql4M } /// <summary> ReX&`,R0 /// 改名 ?!V_*| A,V0B/U0 /// </summary> u6ccT0q,ejvu ?0 /// <param name="currentFilename"></param>ITPUB个人空间X#/RJ4pcI(?O /// <param name="newFilename"></param> 1w@ks_6~0 public void ReName(string currentFilename, string newFilename) 5L'}ZK${F$v t0 { $Q WXYs0 FtpWebRequest reqFTP;ITPUB个人空间k/ov? try |w'E;~/l8^ I6a0 {ITPUB个人空间S(~c/M cJ(a-K reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + currentFilename)); X {{/Y m`(Z6nW/r0 reqFTP.Method = WebRequestMethods.Ftp.Rename;ITPUB个人空间V)^:jp)y?ShK&i reqFTP.RenameTo = newFilename;ITPUB个人空间8S eTWFoO@_| reqFTP.UseBinary = true;ITPUB个人空间ciDxl];C:}(N reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword); *J:J2o KJbqV0 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); [4_ ]6[o(`w&cZ&H8i0 Stream ftpStream = response.GetResponseStream(); ftpStream.Close();ITPUB个人空间'M?} o#Z0r response.Close(); 1N T {&d6k1NWbl|0 } /Ew5VGdB"{'r&P0 catch (Exception ex) *Qy5kiW0 {ITPUB个人空间X$@-E4E&j[u~ Insert_Standard_ErrorLog.Insert("FtpWeb", "ReName Error --> " + ex.Message);ITPUB个人空间4Cm-WZb } X#G]UK!@%k cUNC0 } /// <summary> |+i+^!ek'h+nK0 /// 移动文件ITPUB个人空间(qv(RJ3{1j ](m /// </summary> o(N,cSlCp0 /// <param name="currentFilename"></param>ITPUB个人空间^ Slt^z-[ /// <param name="newFilename"></param> ~EJ8c'Xst0 public void MovieFile(string currentFilename, string newDirectory)ITPUB个人空间r/2F#R3o { )Mx F!/of q0 ReName(currentFilename, newDirectory);ITPUB个人空间*w S:V.m)^xu } /// <summary> )~i![y'[[,H0 /// 切换当前目录ITPUB个人空间k4[{} K#Ow1d-D k /// </summary>ITPUB个人空间 `(Y~%`%D hc&{ /// <param name="DirectoryName"></param>ITPUB个人空间*l8b O Vac:Z /// <param name="IsRoot">true 绝对路径 false 相对路径</param>ITPUB个人空间5i5kYk5s_$gx5f4X8b public void GotoDirectory(string DirectoryName, bool IsRoot)ITPUB个人空间"jp@ay.A_j { 8o*q]&GK*r-k([0 if (IsRoot)ITPUB个人空间4Y] Tdb3vq'A {ITPUB个人空间;fn,?Hr ftpRemotePath = DirectoryName;ITPUB个人空间 q$_gg Z/[ss } p&a5@3/%[od1b*P0 else /FbU8@0C+ZC nT0 { m,a1](_0n Xw;d0 ftpRemotePath += DirectoryName + "/"; -mI1gC8_pGk0 } dRPMN0 ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";ITPUB个人空间*tYJ(w P,U3G o } ITPUB个人空间/!b+v"jxTQ } /i w6G o"h%^-d-daGP0 public class Insert_Standard_ErrorLogITPUB个人空间)Zg%xW9{t { &Wj G_ n+v3m0 public static void Insert(string x, string y )ITPUB个人空间@%T9a!V;cM'gD { }ITPUB个人空间EUa/1YU|8FD8xT }ITPUB个人空间x$^"oO/u//p.xIM } from: http://space.itpub.net/12639172/viewspace-626545