Como ler um arquivo dentro de um diretório?

4 respostas
danielbchaves

eu possuo uma variável que é um diretório da aplicação, preciso ler um arquivo que está dentro desse diretório…

sei que posso pegar o path do diretório e concatenar para achar o caminho completo do arquivo e à partir disso criar um File, mas…

gostaria de usar algo como abaixo

File[] arquivosXML = dirProcessar.listFiles();

vi que existem outras assinaturas para o método listFiles que são para filtro, mas não consegui montar um filtro para pegar o arquivo que preciso… eu sei o nome completo do arquivo, não preciso nem de criar filtros elaborados nem nada disso

4 Respostas

K

não entendi muito bem sua dúvida, mas creio que se fosse para achar o arquivo que você já conhece o nome, seria algo parecido com:

File f1 = new File("C:/");
		File[] f2= f1.listFiles();
		
		for (int i=0;i<f2.length;i++)
		{
			if(f2[i].isFile() && f2[i].getName().equalsIgnoreCase("teste.txt"))
			{
				System.out.println(f2[i].getAbsoluteFile());
				break;
			}
		}
danielbchaves

cheguei a pensar nisso, mas queria saber se tem alguma forma de fazer isso com menos linhas… e o diretório vai conter cerca de 11000 arquvios, gostaria de conseguir algo com melhor performance, não sei se varrendo dessa forma vai ficar devagar demais…

pensei também em montar um file com o path do diretório e concatenar com o nome do arquivo, mas achei que com o filtro seria mais rápido

K

puxa… é muito arquivo pra varrer mesmo…
neste caso tb fico curioso, pois nunca precisei deperformance com pouco arquivos.
do jeito que eu coloquei creio que ficaria lento no seu caso, por culpa do IF

afamorim

Na verdade acesso direto sempre é mais rápido do que uma pesquisa.

caso ele não encontre ele vai dar erro de FileNotFound.

mesmo montando um filtro ele terá que correr os 1000 arquivos do diretório pois qualquer um pode vim atender ao critério passado por você, então tem que se checar mesmo.

no caso do filter http://java.sun.com/j2se/1.4.2/docs/api/java/io/FilenameFilter.html ele não passa de uma interface aonde você implementa o método contendo a regra que você irá querer implementar utilizada para filtrar, justamente para diminuir a quantidade de código passada como exemplo anteriormente e torna-la reaproveitável.

mais caso você queria performance o acesso direto sempre é a melhor forma.

Criado 28 de agosto de 2008
Ultima resposta 28 de ago. de 2008
Respostas 4
Participantes 3