"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso analisar de maneira confiável as listagens de diretórios FTP formatadas de maneira variável em C#?

Como posso analisar de maneira confiável as listagens de diretórios FTP formatadas de maneira variável em C#?

Postado em 2025-03-23
Navegar:926

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

analisando as respostas FTP para listagem de diretórios com formatos variáveis ​​usando C#

declaração de problema:

RESPOSTIDO A FETO FTP LOCAÇÕES: o método WebRequestMethods.ftp.ListDirectoryDetails. O desafio surge devido a variações nos formatos de resposta no software FTP Server. Por exemplo, um servidor pode retornar uma resposta em um formato DOS no estilo Windows, enquanto outro pode aderir a um formato Unix de estilo Linux. Para o formato do estilo do DOS, o código a seguir pode ser utilizado:

string padrony = "^(\\ d -\\ d -\\ d \\ s \\ d: \\ d (\\ w {2}) \\ s ( | \\ d) \\ s (. Regex regex = new regex (padrão); while (! leitor.endofstream) { linha de string = reader.readline (); Match Match = regex.match (linha); string s = match.Groups [1] .Value; DateTime modificado = DateTime.parseExact (S, "mm-dd-yy hh: mmtt", cultura, dateTimestyles.NONE); s = match.Groups [2] .Value; tamanho longo = (S! = "")? long.parse (s): 0; Nome da string = Match.Groups [3] .Value; Console.WriteLine ("{0, -16} {1,9} {2}", nome, tamanho, modificado); }

solução moderna usando o comando 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);
}

Conclusão:

analisando as respostas de listagem do diretório FTP requer manuseio cuidadoso de formatos variados. Embora seja possível uma solução personalizada, é mais confiável utilizar bibliotecas que suportam o comando MLSD moderno. Essa abordagem ou a análise consistente e simplifica a tarefa de extrair metadados de arquivo e diretório relevantes das respostas FTP.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3