Classe File - Como usar o método listFiles(Filter filter)?

4 respostas
A

Olá senhores, bom dia,
alguém poderia me ajudar a implementar no método abaixo o uso do listFiles(Filter filter)?

private static String descobreNomeDoEpubFull(){ String nomeDoEpub = null; File caminhoDoDiretorioC = new File("c:"); File[] recebeConteudoDoDiretiorioC = caminhoDoDiretorioC.listFiles(); for (int i = 0; i < recebeConteudoDoDiretiorioC.length; i++) { if (recebeConteudoDoDiretiorioC[i].getName().endsWith(".epub")) { nomeDoEpub = recebeConteudoDoDiretiorioC[i].getName(); } } return nomeDoEpub; }

4 Respostas

romarcio

Pode fazer com foreach, fica mais fácil e usar um método que retorna um array de string e não de files.

private static String descobreNomeDoEpubFull(){
		String nomeDoEpub = null;
		File caminhoDoDiretorioC = new File("c:\");
		for(String f : caminhoDoDiretorioC.list()) {
			if (f.endsWith(".epub") || f.endsWith(".EPUB")) {
                nomeDoEpub = f;
			}
		}
		return nomeDoEpub; 
	}
A

Gostei do exemplo…

E você saberia usar o Filter também?

romarcio
private static String descobreNomeDoEpubFull(){
		String nomeDoEpub = null;
		File caminhoDoDiretorioC = new File("c:\");

                FilenameFilter filter = new FilenameFilter() {
                      public boolean accept(File dir, String name) {
                          return name.endsWith(".epub");
                      }
                };

		for(String f : caminhoDoDiretorioC.list(filter)) {
                      nomeDoEpub = f;
		}
		return nomeDoEpub;
	}
bolad

segue!

manu trooca esse avatar ..parece um ratooooooooooooooooooooooooo

coloka outro ....pf

public static File[] getTxtFiles(File dir) {
        // selecionar arquivos .txt
        File[] files = dir.listFiles(new FilenameFilter() {
            public boolean accept(File d, String name) {
                return name.toLowerCase().endsWith(".txt");
            }
        });
        // ordenar usando data/tempo de modificacäo
        Arrays.sort(files, new Comparator<File>() {
            public int compare(File o1, File o2) {
                long l1 = o1.lastModified();
                long l2 = o2.lastModified();
                if (l1 < l2) return -1;
                if (l1 > l2) return 1;
                return 0;
            }
        });
    }
e para usar algo como:    public static void main(String[] args) {   
        File[] files = getTxtFiles(new File("c:/teste"));   
        for (File file : files) {   
            // tratamento   
            System.out.printf("%tF %<tT  %s\n",file.lastModified(), file);  // exemplo   
        }   
    }

ou

import java.io.*;   
import java.util.*;   
class teste   
{   
   public static void main(String...args)   
   {   
      MeuFile mf = new MeuFile("./bbb");   
      File[] files = mf.listFiles();   
      for ( int i = 0 ; i < files.length ; i++ )   
      {   
         System.out.println(files[i].getName());   
      }   
   }   
}   
  
class MeuFile extends File   
{   
   public MeuFile(String f)   
   {   
      super(f);   
   }   
  
   public File[] listFiles()   
   {   
      File[] fs = super.listFiles();   
  
      Comparator<File> descendingOnModificationDate =   
      new Comparator<File>() {   
         public int compare(File f1, File f2)    
         {   
            long diff = f1.lastModified() - f2.lastModified();   
            int returnValue;   
            if (diff < 0L) {   
               returnValue = -1;   
            } else if (diff > 0L) {   
               returnValue = +1;   
            } else {   
               assert diff == 0L;   
               returnValue = 0;   
            }   
            return -returnValue; // +returnValue for ascending order   
         }   
      };   
  
      Arrays.sort(fs,descendingOnModificationDate);   
         
      return fs;   
   }   
}

deus mi livre

abrx

Criado 21 de janeiro de 2011
Ultima resposta 21 de jan. de 2011
Respostas 4
Participantes 3