«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу надежно проанализировать списки каталогов FTP в C#?

Как я могу надежно проанализировать списки каталогов FTP в C#?

Опубликовано в 2025-03-23
Просматривать:772

How Can I Reliably Parse Variably Formatted FTP Directory Listings in C#?

]

parsing ftp -ответы для списка каталогов с форматами переменных с использованием C#

Задача задачи:

. В разработке службы для мониторинга FTP Locations. WebRequestmethods.ftp.listDirectoryDetails Метод. Задача возникает из -за изменений в форматах ответов в программном обеспечении FTP -сервера. Например, один сервер может вернуть ответ в формате DOS в стиле Windows, в то время как другой может придерживаться формата Unix в стиле Linux. Для формата в стиле DOS можно использовать следующий код:

String Pattern = "^(\\ d -\\ d -\\ d \\ s \\ d: \\ d (\\ w {2})) \\ s (

| \\ d) \\ s (.*) $"; Regex regex = new Regex (шаблон); while (! reader.endofstream) { String line = reader.readline (); Match match = regex.match (line); строка s = match.groups [1] .value; DateTime modified = datetime.parseexact (s, "Mm-dd-yy HH: MMTT", культура, dateTimestyles.none); s = match.groups [2] .value; длинный размер = (s! = "")? long.parse (s): 0; string name = match.groups [3] .value; Console.WriteLine ("{0, -16} {1,9} {2}", имя, размер, модифицированный); } Современное решение с использованием команды MLSD:

string pattern = "^(\\d -\\d -\\d \\s \\d :\\d (\\w{2}))\\s (|\\d )\\s (.*)$";
Regex regex = new Regex(pattern);
while (!reader.EndOfStream)
{
    string line = reader.ReadLine();
    Match match = regex.Match(line);
    string s = match.Groups[1].Value;
    DateTime modified = DateTime.ParseExact(s, "MM-dd-yy  hh:mmtt", culture, DateTimeStyles.None);
    s = match.Groups[2].Value;
    long size = (s != "") ? long.Parse(s) : 0;
    string name = match.Groups[3].Value;

    Console.WriteLine("{0,-16} {1,9}  {2}", name, size, modified);
}

remotefileinfo [] files = session.enumerateremotefiles (path, null); foreach (файл remotefileinfo в файлах) { Console.WriteLine ("{0, -16} {1,9} {2}", file.name, file.length, file.lastwriteTime); }

Заключение:

RemoteFileInfo[] files = session.EnumerateRemoteFiles(path, null);
foreach (RemoteFileInfo file in files)
{
    Console.WriteLine("{0,-16} {1,9}  {2}", file.Name, file.Length, file.LastWriteTime);
}
]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3