Tenho uma aplicação que deve processar alguns arquivos de uma determinada pasta.
Por exemplo C:\arquivo_processar só que nesta pasta existe 700 mil arquivos, que ao
todo utilizam 2,6 GB de tamanho.
Quando mando executar o comando list da classe File como o tamanho da pasta e muito
grande chega a demorar até uma hora, ou da a Exception Java Heap Space, então a minha
dúvida é, existe alguma possibilidade de eu fazer assim file.firstFile(), ele me retornar o
primeiro arquivo. e eu fazer isso até processar os 700 mil arquivos.
Qualquer ajuda será bem vinda, obrigado e até mais.
bom dia hugov,
1º Dependendo da sua aplicação, você pode criar uma estrutura que pegue somente o 1 arquivo do diretório e disparar um processamento em uma outra thread interrompendo o processamento da principal.
2º mude o arquivo processado de diretório caso necessite de backup do mesmo por exemplo (copie para o diretorio c:\arquivos_processados e delete de c:\arquivos_processar)
3º Ao finalizar o processamento vc reinicia o processamento da thread principal.
mas talvez esta não seja a melhor solução para o seu problema, pode ser que você tenha problemas quanto a performance dependendo de como irá rodar sua aplicação.
[quote=gilsonpolito]bom dia hugov,
1º Dependendo da sua aplicação, você pode criar uma estrutura que pegue somente o 1 arquivo do diretório e disparar um processamento em uma outra thread interrompendo o processamento da principal.
2º mude o arquivo processado de diretório caso necessite de backup do mesmo por exemplo (copie para o diretorio c:\arquivos_processados e delete de c:\arquivos_processar)
3º Ao finalizar o processamento vc reinicia o processamento da thread principal.
mas talvez esta não seja a melhor solução para o seu problema, pode ser que você tenha problemas quanto a performance dependendo de como irá rodar sua aplicação.
boa sorte.
[]´s[/quote]
Isso é o que estou procurando, uma API pronta que possa desenvolver isso
pois o java não me disponibiliza isso. E construir um componente deste acredito
que não seja tão fácil.
Mesmo assim continuarei na luta, obrigado pela ajuda.
Muito obrigado pelo seus apontamentos, sobre como criar o FilenameFilter ,
eu já havia conseguido criar o filter. Mas o que acontece é que mesmo com o filter
a demora que ocorre para trazer resultados continua absurdo.
Em pastas com quantidades menores de arquivo está funcionando. O que pude
estar analisando e que a JVM deve ter uma quantidade de arquivos, ou tamanho que ela
ou o sistema operacional consegue gerenciar.
Por hora, como não consegui uma maneira de contornar essa situação, e fazer de uma
maneira nativa talvez seja muito trabalhoso, resolvemos contornar esta situação impedindo,
que seja colocado mais do que 1000 mil arquivos em um diretório.