Preciso desenvolver um Software que me retorne uma lista com o nome dos arquivos e seus respectivos caminhos desde que os mesmos possuam extensões específicas em plataforma Windows.
Pensei em executar o DIR/S para depois ir filtrando o que ele me retornasse, mas aí fico perdido com relação a usar a classe Runtime e Process…
de uma olhada em java.io.File (método listFiles(FileFilter filter) )
[ ]s
dseabra
Ok. Com algumas jogadinhas de cintura e alguns auxílios eu matei o problema, todavia, apareceu outo.
Estou verificando também todos os drives presentes no computador, logo, podem existir Drives de CDROM no meio da varredura que caso não tenha CD dentro do Drive, o Windows exibe a mensagem reclamando de que não há mídia no drive. Com o JAVA há alguma maneira de tratar isso de modo que independente de se ter ou não mídia dentro do drive, ele não exiba essa mensagem?
Pois a idéia é efetuar um scan geral na máquina sem que o usuário esteja ciente disso.
Pensei em filtrar para que o programa não leia o D: só que existem micros com mais de 1 HD instalado, aí não há como filtrar de tal modo.
thiago.correa
Você pode fazer assim:
Filef=newFile("d:/");if(f.canRead()){System.out.println("A unidade possui: "+f.listFiles().length);}else{System.out.println("Verifique o drive de CD");}
dseabra
Infelizmente não funcionou. Ele faz a verificação com o método “canRead()” só que mesmo assim exibe a mensagem do Windows dizendo que não foí possível ler a unidade (por ser unidade de CDROM e o mesmo não conter um CD inserido).
Puts…
Arcadex
Fiz o teste aqui e funcionou.
Não exibiu janela nenhuma do windows não.
dseabra
Sim ma você está executando daonde?
Se eu rodo no NetBeans ele naum da essa mensagem, mas se eu compilo e executo pelo prompt de comando aí sim ele da a mensagem.
dseabra
Não sei o que eu fiz aqui que funcionou. Ele não está mais reclamando. Mas o estranho é que estava reclamando com o canRead(), todavia, não está mais. Acho que depende da forma com o qual você executa o programa ele vem a exibir a mensagem ou não.
Eis um dos mistérios do Java.
Obrigado pelo Help.
ViniGodoy
Se for no Java 6, veja os métodos static listRoots() e getFreeSpace() da classe file.