Code Bye

FTP 检索服务器文件夹得到的文件名带/

检测ftp://192.168.111.50/Ftp文件夹下的子文件和子文件夹,用来判断上传文件夹是否已经存在。
结果得到的是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转换掉就行了…

—-

引用 1 楼 u012804018 的回复:

把末尾的/用Replac转换掉就行了…

试了一下,确实是带父节点的
我把_upLoadPath 改成    ftp://192.168.111.50/Ftp/1
得到的就是1/1,1/2的形式了。。。
太不友好了。。还把父节点带上

—-

files.Add(line); => 
files.Add(line.Substring(line.IndexOf("/") + 1));

—- 20分

引用 3 楼 u012948520 的回复:
files.Add(line); => 
files.Add(line.Substring(line.IndexOf("/") + 1));

最好用LastIndexOf。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明FTP 检索服务器文件夹得到的文件名带/