直接說方法:
1 public string[] GetFileList() 2 { 3 string[] downloadFiles; 4 StringBuilder result = new StringBuilder(); 5 FtpWebRequest reqFTP; 6 try 7 { 8 reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(@ftp://192.168.13.1 + "/")); 9 reqFTP.UseBinary = true; 10 reqFTP.Credentials = new NetworkCredential("Administrator","123456"); 11 reqFTP.Method = WebRequestMethods.Ftp.ListDirectory; 12 WebResponse response = reqFTP.GetResponse(); 13 StreamReader reader = new StreamReader(response.GetResponseStream(),Encoding.Default); 14 15 string line = reader.ReadLine(); 16 while (line != null) 17 { 18 result.Append(line); 19 result.Append("\n"); 20 line = reader.ReadLine(); 21 } 22 // to remove the trailing '\n' 23 result.Remove(result.ToString().LastIndexOf('\n'), 1); 24 25 26 reader.Close(); 27 response.Close(); 28 return result.ToString().Split('\n'); 29 } 30 catch (Exception ex) 31 { 32 System.Windows.Forms.MessageBox.Show(ex.Message); 33 downloadFiles = null; 34 return downloadFiles; 35 } 36 }
解釋一下,這個方法就是獲取FTP目錄下所有的文件(注意:不包括文件夾,在網上搜索說是獲取FTP下的文件和文件夾,但是經過本人在自己的FTP上測試,只能獲取到文件的名字,無法獲取FTP下文件夾的名字)。
其中,ftp://192.168.13.1為FTP的目錄。也可寫成ftp://192.168.13.1/a,即獲取FTP目錄下a這個文件夾下的所有文件名稱。
Administrator為連接FTP所需的用戶名,123456為用戶名密碼,根據需要更改。
reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;這句代碼就是實現FTP的ListDirectory方法,即獲取文件名。
如果是需要獲取FTP下所有文件夾的名字,那就麻煩一點兒了,需要把Ftp的方法修改為ListDirectoryDetails。即代碼:
reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
修改為
reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
這樣是獲取FTP目錄下所有的文件和文件夾的名字。
綜上所示,可以獲取FTP指定目錄下的文件名,也可獲取FTP指定目錄下的文件和文件夾名。那么獲取FTP指定目錄下文件夾的名字是不是就出來了呢,這樣就可以實現判斷FTP目錄下指定文件夾是否存在了,有點兒繞彎,不過也是一種方法。
也就是對字符串的操作了,這個就不多講了。自己實現,有需要留言~