Testando existência de arquivos

Pessoal, quero checar se arquivos no diretório A existem no diretório B.

       File A = new File("C:DirA");
       File B = new File("C:DirB";
	
       File[] arqsA = A.listFiles();
       File[] arqsB = B.listFiles();
	
for(int x=0; x < arqsA.length; x++){
     String nome1 = arqsA[x].getName();
            for(int w=0; w < arqsB.length; w++){
     String nome2 = arqsB[w].getName();
           if (nome1 == nome2)
	System.out.println("Existe ");
           else
	System.out.println("Nao Existe ");
}
}

Tô meio maluco?!? :shock: :shock:

Digitei na pressa, o diretório seria “C:DirA”.
:slight_smile:

Parece que funciona, mas comparar strings com == não dá certo. Use .equals() :wink:

affff… eu me esforcando aqui pra poder fazer o codigo e cv ja respondeu…

bem de todo jeito eu vou postar pelo esforco… mas vc tem que ter certeza que as duas pastas tem a mesma quantidade de arquivos… eh so colocar um if no comeco e passa direito…

  public void rodar()
   {
    dir1 = new File( "C:\temp\temp1" );
    dir2 = new File( "C:\temp\temp2" );
    lista1 = dir1.listFiles();
    lista2 = dir2.listFiles();
    for( int i = 0; i < lista1.length; i++ ) 
     {      
      if( lista1[i].getName().equals( lista2[i].getName() ) )
       System.out.println( lista1[i].toString() + ": igual" );
      else
       System.out.println( lista1[i].toString() + ": diferente" );
     }   
   }

se alguem tiver alguma coisa que diga agora ou cale-se para sempre :stuck_out_tongue:

       System.out.println( lista1[i].toString() + ": igual a : " + lista2[i].toString() );

E ainda fica melhor usando essa linha…

Se a idéia for exatamente essa:

Esse código não funciona corretamente…
Exemplo

[code]dir A

arq001.txt
arq002.txt
arq003.txt
[/code]

[code]dir B

arq001.txt
arq002.txt
arq002a.txt
arq002b.txt
arq003.txt[/code]

Concorda que os arquivos do dir A estão no dir B ? Então, mas se você ultilizar esse algoritimo a verificação falhará…

[]´s

mas ai o cara pode testar a quantidade de arquivos… isso foi so um quebra galho pow da um descoto :stuck_out_tongue:

Hummm, boa idéia hein… estava tentando imaginar em algo aqui, mas isso é de longe muito mais simples! Eu sempre me esqueço do KISS

Valeu, galera.

Valeu, galera.
Ajudaram muito. A idéia é mesmo testar se todos os arquivos do A se encontram no B. O resto é comigo…por enquanto! rs[color=“darkred”][/color]

Só para acrescentar uma coisinha:…

Além de testar se os arquivos existem, eu quero copiá-los para o diretório (fazendo quase um “mirror”). A questão é a seguinte: se o arquivo existe, eu quero copiá-lo mesmo assim (opa, deixa eu dizer que copiar eu sei…rs ), a não ser que o arquivo no diretório de destino esteja sendo editado (aberto).
A questão: como eu sei que o arquivo já está aberto?

Bem-vindo ao mundo do software multiplataforma! :smiley:

Nao da pra saber se o arquivo esta sendo editado ou nao. Pra comecar, no Unix isso requer permissoes de root (vide lsof), e em outros sistemas operacionais pode nem ser possivel.

Qual a maneira mais fácil de saber o tamanho do arquivo em bytes?