检测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。