ftp .net getdirectory大小

时间:2010-05-14 12:18:47

标签: visual-c++ ftp c++-cli

嗨我写的方法必须知道指定目录的大小我从服务器获得响应,其中包含文件名大小和其他信息的标志和不同的ftp服务器格式的答案是不同的如何知道答案的格式?

unsigned long long  GetFtpDirSize(String^ ftpDir) {
unsigned long long  size = 0;
int j = 0;
StringBuilder^ result = gcnew StringBuilder();
StreamReader^ reader;
FtpWebRequest^ reqFTP;
reqFTP = (FtpWebRequest^)FtpWebRequest::Create(gcnew Uri(ftpDir));
reqFTP->UseBinary = true;
reqFTP->Credentials = gcnew NetworkCredential("anonymous", "123");
reqFTP->Method = WebRequestMethods::Ftp::ListDirectoryDetails;
reqFTP->KeepAlive = false;
reqFTP->UsePassive = false;
try {
    WebResponse^ resp = reqFTP->GetResponse();
    Encoding^ code;
    code = Encoding::GetEncoding(1251);
    reader = gcnew StreamReader(resp->GetResponseStream(), code);
    String^ line = reader->ReadToEnd();
    array<Char>^delimiters = gcnew array<Char>{
        '\r', '\n'
    };
    array<Char>^delimiters2 = gcnew array<Char>{
        ' '
    };
    array<String^>^words = line->Split(delimiters, StringSplitOptions::RemoveEmptyEntries);
    array<String^>^DetPr;
    System::Collections::IEnumerator^ myEnum = words->GetEnumerator();
    while ( myEnum->MoveNext() ) {
        String^ word = safe_cast<String^>(myEnum->Current);
        DetPr = word->Split(delimiters2);
   }
}

1 个答案:

答案 0 :(得分:1)

基本上,你不能。您正在解释原始结果,并且没有为此数据定义的格式(或者是否要求在响应中返回此数据)。并且FTP协议没有定义任何其他方式来实现此目的。

您所了解的是您了解的服务器类型的解析模式集合,并通过它们查找有效数据。不容易。