Eu tenho algum código destinado a obter arquivos em um diretório, o que é bastante simples
foreach (var Totalfile in new DirectoryInfo(rootfolder).GetFiles("*Totals*.csv", SearchOption.TopDirectoryOnly))
Os arquivos são nomeados da seguinte maneira:
Totals.CSV142344
Totals.CSV142409
Totals.CSV142433
Totals.CSV142501
Totals.CSV142528
Meu problema é que ele não está pegando o último arquivo.
Corrigi o código colocando isso:
foreach (var Totalfile in new DirectoryInfo(rootfolder).GetFiles("*Totals*.csv*", SearchOption.TopDirectoryOnly))
Dizendo obter qualquer arquivo que contenha Totais e .csv, com qualquer coisa após o .csv.
O que eu não entendo é por que ele obteve os quatro arquivos principais, mas não o inferior.
Eu teria pensado que nenhum dos arquivos seria pego pelo código original?
Totals~n.csv
não cabe mais e você só pode obter uma correspondênciaTotal*
. Digitedir /x tot*.*
para ver nomes abreviados. Você é a favorTotals.csv*
e pode ter que filtrar para eliminar correspondências acidentais.Respostas:
Aparentemente,
GetFiles
adere à lógica de correspondência de padrões conforme é implementada, digamos, nodir
comando.MSDN
Como o @GSerg apontou, alguns de seus arquivos têm um nome 8.3 correspondente.
Tente alterar o padrão
Totals.csv*
para corresponder a todos os arquivos.fonte