Procurando nos diretórios por toneladas de arquivos?
-
08-06-2019 - |
Pergunta
Estou usando o MSVE e tenho meus próprios blocos exibidos em camadas na parte superior.O problema é que há muitos deles e estão em um servidor de rede.Em certos diretórios, há algo em torno de 30.000+ arquivos.Inicialmente chamei Directory.GetFiles, mas assim que comecei a testar em um ambiente pseudo-real, o tempo expirou.
Qual é a melhor maneira de listar e iterar programaticamente tantos arquivos?
Editar:Meu colega de trabalho sugeriu usar o serviço de indexação MS.Alguém já tentou essa abordagem e (como) funcionou?
Solução
Já trabalhei em um sistema SAN no passado com gravações de áudio de telefonia que apresentavam problemas com o número de arquivos em uma única pasta - esse sistema tornou-se inutilizável em algum lugar perto de 5.000 (no Windows 2000 Advanced Server com um aplicativo em C#.Net 1.1) - a única solução sensata que encontramos foi alterar a estrutura de pastas para que houvesse um número mais razoável de arquivos.Curiosamente, o Explorer também expiraria!
A convenção que criamos foi uma estrutura que dividiu a estrutura em anos, meses e dias - mas isso dependerá do seu sistema e se você pode controlar a estrutura de diretórios...
Outras dicas
Definitivamente separe-os.Dito isso, fique o mais longe possível do Serviço de Indexação.
Nenhum.O .NET depende de chamadas de API subjacentes do Windows que realmente odeiam essa quantidade de arquivos.
Como Ronnie diz:separe-os.
Você poderia usar DOS?
DIR /s/b > Files.txt
Você também pode indexar os arquivos sozinho ou obter um aplicativo de terceiros, como Google Desktop ou copérnico fazer isso e depois interagir com seu índice.Eu sei que o Copernic tem uma API que você pode usar para procurar qualquer arquivo em seu índice e também oferece suporte ao mapeamento de unidades de rede.