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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top