日期:2014-05-18  浏览次数:20916 次

VS2008 , WEB,C#,如何获取ftp上某一个路径下所有文件列表
开发环境:VS2008、WEB项目、C#后台语言

目的:获取ftp上一个路径下所有文件的列表

ftp信息如下:
ftp://192.168.1.3
用户名:test
密码:test

我要获取如下路径下的文件列表(文件名,不包含后缀)
ftp://192.168.1.3/TV/PATTERN
该路径下会有几十至几百个如下文件
L100.pt
L101.pt
L102.pt
....
我要获取
L100
L101
L102
...


------解决方案--------------------
C# code

       /// <summary>
       /// 根据ftp路径返回目录下的文件名称 不带扩展名
       /// </summary>
       /// <param name="ftpDir"></param>
       /// <param name="userName"></param>
       /// <param name="passWord"></param>
       /// <returns></returns>
      public static ArrayList GetFileNames(string ftpDir, string userName, string passWord)
       {
           var fileNames = new ArrayList();

           var reqFtp = (FtpWebRequest)WebRequest.Create(new Uri(ftpDir));
           reqFtp.UsePassive = false;
           reqFtp.UseBinary = true;
           //reqFTP.EnableSsl = true;//加密方式传送数据 FTP 服务器要支持
           reqFtp.Credentials = new NetworkCredential(userName, passWord);
           reqFtp.Method = WebRequestMethods.Ftp.ListDirectory;
           var response = (FtpWebResponse)reqFtp.GetResponse();
           var reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
           string fileName = reader.ReadLine();
           while (fileName != null)
           {
               fileNames.Add(Path.GetFileNameWithoutExtension(fileName));
               fileName = reader.ReadLine();
           }
           reader.Close();
           response.Close();
           //var fileNames = reader.ReadToEnd();
           reader.Close();
           response.Close();
           return fileNames;
       }