FtpWebRequest只返回带有ListDirectoryDetails的文件名

本文关键字:ListDirectoryDetails 文件名 返回 FtpWebRequest | 更新日期: 2023-09-27 18:25:22

我发现一个代码非常有用,但下面的代码从一个FTP服务器返回目录和文件的名称,我只需要获得文件的名称。

ftpRequest = (FtpWebRequest) FtpWebRequest.Create(host + "/" + directory);
/* Log in to the FTP Server with the User Name and Password Provided */
ftpRequest.Credentials = new NetworkCredential(user, pass);
/* When in doubt, use these options */
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = true;
ftpRequest.KeepAlive = true;
/* Specify the Type of FTP Request */
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
/* Establish Return Communication with the FTP Server */
ftpResponse = (FtpWebResponse) ftpRequest.GetResponse();
/* Establish Return Communication with the FTP Server */
ftpStream = ftpResponse.GetResponseStream();
/* Get the FTP Server's Response Stream */
StreamReader ftpReader = new StreamReader(ftpStream);
/* Store the Raw Response */
string directoryRaw = null;
/* Read Each Line of the Response and Append a Pipe to Each Line for Easy Parsing */
try{
     while (ftpReader.Peek() != -1){
        directoryRaw += ftpReader.ReadLine() + "|";
     }
 }
 catch(Exception ex)
 {
      //Do something
 }
...
...
...

我调查了一下,但WebRequestMethods.Ftp只有ListDirectoryListDirectoryDetails,它们都返回目录和文件的名称:(..

有人可以帮我。。

感谢

FtpWebRequest只返回带有ListDirectoryDetails的文件名

ListDirectory向只返回文件名的服务器发出NLST命令。

ListDirectoryDetails向服务器发出LIST命令,该命令通常返回带有详细信息的文件名。

但它最终取决于服务器,它会返回什么。如果它只返回两者的文件名,FtpWebRequest将对此无能为力

服务器可能支持MLSD命令返回文件详细信息,但FtpWebRequest不支持。另一种可选用途是分别对每个文件使用GetFileSizeGetDateTimestamp。但这很慢。

另请参阅我在检索文件创建日期(FTP)中的回答。

获取ftp对象名称的方法总是返回完整的列表(目录和文件)。我通过扩展名来限制名称,例如

var xmlFiles = files.FindAll( foo => foo.ToUpper().Contains( ".XML" )|| foo.ToUpper().Contains( ".TXT" ));
相关文章:
  • 没有找到相关文章