Problema num loop!

Bom Dia Pessoal!

estou tendo dificuldades em parar um loop

o código abaixo

FTPFile[] meuFile = ftp.verArquivo();

        for (int i = 0; i < meuFile.length; i++) {
            System.out.println(meuFile[i].getName());
            
                
        }

me retorna isso …

run:
Conectado a ftp.discovirutal.terra.com.br com sucesso!
Working directory changed to: pasta1
.
..
file1.txt
file2.txt
file3.txt
file4.txt

Normal!, até aí tudo bem…

o que eu preciso na verdade é passar uma string com o nome do arquivo e verificar se ele existe…


FTPFile[] meuFile = ftp.verArquivo();
        String nomeDoArquivoASerVerificado = "file1.txt";
        for (int i = 0; i < meuFile.length; i++) {
            System.out.println(meuFile[i].getName());
            if (meuFile[i].getName == nomeDoArquivoASerVerificado) {
                      
                     System.out.println("O Arquivo Existe");
    
                
        }break;
}

era pra funcionar e mandar a msg que o arquivo existe…

porém a saída que eu tenho é esta


run:
Conectado a ftp.discovirutal.terra.com.br com sucesso!
Working directory changed to: pasta1
.
..

Será que faltou alguma coisa no meio do caminho?

use equals ao invés de ==

putz…

deu certo!

mas qual a diferença de usar “==” sendo que o metodo getName retorna uma String?

Obrigado mesmo \o/

Porque o == compara se duas instâncias do objeto tipo String são iguais, o equals compara se o valor de dois objetos do tipo String são iguais (o que é, geralmente, mais indicado)

O operador “==” refere-se ao endereço de memória do objeto, ou seja, sua referência. Se deseja comparar strings use o equals.

O operador == retornará true caso verifiquemos se as variáveis de mesmo valor/conteúdo apontam para o mesmo endereço de memória de um objeto distinto.

O equals retorna um boolean que verifica se dois objetos são iguais ou não .

Segue um exemplo reescrevendo a assinatura do método equals da classe java.lang.Object:

public class Livro {
    ...
    public boolean equals(Object obj) {
        if (obj instanceof Livro) // verifica se o objeto passado é compatível com a classe em questão
            return Codigo.equals((Livro)obj.getCodigo()); 
        else
            return false;
    }
}

Assumindo uma comparação por igualdade entre 2 instâncias distintas:

Livro livro1  = new Livro("123456");
Livro livro2  = new Livro("123456");
if (livro1.equals(livro2)) {
    System.out.println("objetos são iguais");
} else {
    System.out.println("objetos são diferentes");
}

Mesmo sendo 2 objetos distintos (livro1 e livro2), o programa mostrará “objetos são iguais”, pois os objetos em questão tem o mesmo Codigo (123456).