Размер ftp .net getdirectory - PullRequest
       11

Размер ftp .net getdirectory

0 голосов
/ 14 мая 2010

Привет, я пишу метод, который должен знать, что это размер указанного каталога, я получаю ответ от сервера, который содержит флаги размера имени файла и другую информацию, и на разных серверах 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 Ответ

1 голос
/ 14 мая 2010

В принципе, вы не можете. Вы интерпретируете необработанный результат, и не существует определенного формата для этих данных (или есть какое-либо требование, чтобы эти данные вообще возвращались в ответе). И протокол FTP не определяет какой-либо другой способ получить это.

То, что оставляет вас, - это набор шаблонов синтаксического анализа для типов серверов, о которых вы знаете, и работы с ними в поисках достоверных данных. Не совсем легко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...