Erro na filtragem do list

3 respostas
protheusx

Galera estou tentando fazer um list onde apareça somente um tipo determinado de arquivo no exemplo que estou enviando seria mp3 so que nao esyou obtendo sucesso alguem pode me ajudar?

private DefaultListModel lista()
	{
		
		lmArq = new DefaultListModel();
		String dir = "c:/";
	    File fDiretorio = new File(dir);
	    File list[] = fDiretorio.listFiles();
	    
	    String arq[] = fDiretorio.list();
	   	    
	    
		for (int i=0; i<fDiretorio.listFiles().length; i++)
		{
			if (list[i].isFile())
			{
				if ((arq[i].substring((arq[i].length()-3),arq[i].length())).toLowerCase() == "mp3".toLowerCase())
				 lmArq.addElement(arq[i]);
				
				
			}
		}

		return lmArq;
	}

obrigado pela atenção de todos

3 Respostas

thiago.correa

Somente objetos e tipos primitivos são comparados com o operador “==” ao invés disso utilize o método equalsIgnoreCase da Classe String

Dica: Pesquise sobre FileFilter para fazer o que você quer

T

Outra coisa: prefira usar “endsWith” em vez desse monte de substrings e lengths. É mais claro:

Original corrigido mas obscuro:

if ((arq[i].substring((arq[i].length()-3),arq[i].length())).toLowerCase().equals("mp3".toLowerCase()))

Corrigido e MUITO mais fácil de entender (e mais rápido também, he he he):

if ((arq[i].toLowerCase().endsWith (".mp3"))
T

E pra quem é viciado em expressões regulares (se você for acostumado a programar em Perl sabe o que estou falando):

if ((arq[i].substring((arq[i].length()-3),arq[i].length())).toLowerCase() == “mp3”.toLowerCase())

if ((arq[i].matches ("(?i).*\.mp3"))
Criado 1 de fevereiro de 2007
Ultima resposta 1 de fev. de 2007
Respostas 3
Participantes 3