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
只有ListDirectory
和ListDirectoryDetails
,它们都返回目录和文件的名称:(..
有人可以帮我。。
感谢
ListDirectory
向只返回文件名的服务器发出NLST
命令。
ListDirectoryDetails
向服务器发出LIST
命令,该命令通常返回带有详细信息的文件名。
但它最终取决于服务器,它会返回什么。如果它只返回两者的文件名,FtpWebRequest
将对此无能为力
服务器可能支持MLSD
命令返回文件详细信息,但FtpWebRequest
不支持。另一种可选用途是分别对每个文件使用GetFileSize
和GetDateTimestamp
。但这很慢。
另请参阅我在检索文件创建日期(FTP)中的回答。
获取ftp对象名称的方法总是返回完整的列表(目录和文件)。我通过扩展名来限制名称,例如
var xmlFiles = files.FindAll( foo => foo.ToUpper().Contains( ".XML" )|| foo.ToUpper().Contains( ".TXT" ));