我正在创建一个需要FTP到目录以检索文件列表的C#应用程序。下面的代码工作得很好。但是,我正在FTP的文件夹包含大约92,000个文件。此代码不会按照我希望的方式处理该大小的文件列表。使用FTP从目录中检索特定文件
我只查找以字符串“c-”开头的文件。在做了一些研究之后,我甚至不知道如何着手解决这个问题。有没有什么办法可以修改这个现有的代码,以便它只检索那些文件?
public string[] getFileList() {
string[] downloadFiles;
StringBuilder result = new StringBuilder();
FtpWebRequest reqFTP;
try {
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpHost));
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential(ftpUser, ftpPass);
reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
WebResponse response = reqFTP.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string line = reader.ReadLine();
while (line != null) {
result.Append(line);
result.Append("\n");
line = reader.ReadLine();
}
// to remove the trailing '\n'
result.Remove(result.ToString().LastIndexOf('\n'), 1);
reader.Close();
response.Close();
return result.ToString().Split('\n');
}
catch (Exception ex) {
System.Windows.Forms.MessageBox.Show(ex.Message);
downloadFiles = null;
return downloadFiles;
}
}
你看过正则表达式吗? – 2012-08-16 13:50:08
@RobertH - 我确实认为正则表达式可能是要走的路,但问题实际上是检索文件列表来解析正则表达式。它只会挂起。 – 2012-08-16 13:51:54
我对FTP本身并不熟悉,但假设这一行包含了你的文件名(可能还有额外的东西),那么根据空格或任何控制字符存在,然后将结果文件名通过正则表达式并将其添加到结果,如果它匹配的正则表达式? – 2012-08-16 13:59:41