检测ftp://192.168.111.50/Ftp文件夹下的子文件和子文件夹,用来判断上传文件夹是否已经存在。
结果得到的是Ftp/1,Ftp/2…把它的父目录给带进来了
代码如下:
结果得到的是Ftp/1,Ftp/2…把它的父目录给带进来了
代码如下:
private bool CheckExist(string fileName) { try { FtpWebRequest checkRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(_upLoadPath)); checkRequest.Method = WebRequestMethods.Ftp.ListDirectory; checkRequest.UseBinary = true; checkRequest.Credentials = new NetworkCredential(_userName, _password); FtpWebResponse response = (FtpWebResponse)checkRequest.GetResponse(); StreamReader sw = new StreamReader(response.GetResponseStream()); List<string> files = new List<string>(); string line = sw.ReadLine(); while (line != null) { files.Add(line); line = sw.ReadLine(); } sw.Close(); response.Close(); return files.Contains(fileName); } catch (System.Exception ex) { Log.GetLogger().WriteLog(ex); return false; } }
参数取值:_upLoadPath ftp://192.168.111.50/Ftp fileName “1”(文件夹)
目的,判断1是否已存在,不存在则创建,存在则改名再上传,传成功则删掉,不成功则改回原来名字
得到的文件名形式:FTP/1 Ftp/2………..
—- 60分
把末尾的/用Replac转换掉就行了…
—-
试了一下,确实是带父节点的
我把_upLoadPath 改成 ftp://192.168.111.50/Ftp/1
得到的就是1/1,1/2的形式了。。。
太不友好了。。还把父节点带上
—-
files.Add(line); => files.Add(line.Substring(line.IndexOf("/") + 1));
—- 20分
最好用LastIndexOf。