Classe File: Método list()

try { String[] files = new String[100]; File search = new File("search"); files = search.list(); for (String bb : files){ System.out.println("encontrou: " + bb); } } catch (Exception e) { e.printStackTrace(); }

Pessoal, qual o problema desse codigo?

esta lancando NullPointer Exception

 try {  
    String[] files = new String[100];  
     File search = new File("search");
     if(search.exists()){
     files = search.list();  
     for (String bb : files)
     System.out.println("encontrou: " + bb);  

      }  else System.out.println("Não encontrou");
 } catch (Exception e) {  
     e.printStackTrace();  
 }

tá, mas search no caso eh apenas o OBJETO…nao o arquivo…

neste caso, eu pensei q ele seria um objeto de apoio à busca somente…sem nenhum tipoo de “influencia”…

poderia me falar um pouco melhor ?!

ele procura(search) pelo o q? diretorio? arquivo?

p.s: exemplo tirado do K&B

ele nao procura, foi voce que chamou o objeto de “search”.

ele simplesmente lista os arquivos e diretorios…

http://java.sun.com/javase/6/docs/api/java/io/File.html#list()

“Returns an array of strings naming the files and directories in the directory denoted by this abstract pathname.”

sim sim, eu apenas chamei o objeto de search, so q ele nao encontra nada…
e era para encontrar um arquivo e um diretorio…

(antes eu testei gravando um arquivo e um diretorio…)

olha kra…quando vc instancia o objeto java.io.File, vc normalmente da como parametro pro construtor uam String que corresponde ao endereço desse File que vc quer, por exemplo:

[code]File f=new File(“C:\Documents and Settings\Administrador\Meus documentos”);

String[] arquivos=f.list();[/code]

ou

[code]File f=new File(“C:\Arquivos de programas\Java\jdk1.6.0_02”);

String[] arquivos=f.list();[/code]

se vc quer lista os arquivos pra ele, vc tem que aponta o endereço de uma pasta, em uma string, servindo a variavel de string, com em:

[code]String diretorio=“C:\Arquivos de programas\Java\jdk1.6.0_02”;

File f=new File(diretorio);

String[] arquivos=f.list();[/code]

depois pra visualiza vc pode da um loop, como em:

for (int i=0;i<arquivos.length;i++) System.out.println(arquivos[i]);

eu to fazendo um projetinho aqui que lista os arquivos de determinado diretorio, da um .lastModified() neles e copia só os atualizados a partir de determinada data, essa parte esta testada e funcionando.

a proposito, ta dando null pointer pq não encontra o endereço que vc especificou (veja an linha, a String que vc mando ao instanciar seu objeto File)

Prq vc nao realiza uma verificação se este arquivo é um diretório?


File f = new File ("/usr/local");

if (f.isDirectory())
   System.out.println("è um diretorio")

E assim vc pode listar os arquivos deste diretório.

File.list() retorna null se o File não for um diretório, ou se houver algum problema.
Ou seja, em vez de você fazer:

for (String bb : files) {
    ....
}

faça:

if (files != null) {
    for (String bb : files) {
    ....
    }
}