Bom...
Eis que sou um aspirante a programador em java, e quando estava a criar um programa (uma coisa boba... só pra treinar o uso das classes de leitura e escrita de arquivos), eu me deparei com o seguinte problema:
primeiro, meu código:
import java.io.*;
public class Main {
public static void main (String[] args)throws IOException{
BufferedReader arquivo = new BufferedReader(new FileReader("lista de nomes.txt"));
String nomes = arquivo.readLine();
while(nomes != null){
if (nomes == "João"){
System.out.println("ok");
}
nomes = arquivo.readLine();
}
}
}
o problema éra que no:
if (nomes == "João"){
o programa "dizia" que nao havia encontrado o nome "João" no arquivo que eu mandei ele ler (embora o arquivo que eu mandei ele ler seja uma lista de nomes, que entre estes está o nome "João" em uma linha separada).
Pois bem, mexo aqui.. mexo ali.. na tentativa de fazer o código funcionar e eis que quando troko aquela linha por:
if (nomes.contains("João") == true){
E problema resolvido...
porém... ficou a dúvida..
Porque isso aconteceu ??
Já que tecnicamente o método "readLine()" retorna uma String, que eu armazenei em uma String, a comparação que eu fiz inicialmente deveria ser válida. Não consegui achar uma explicação para o que aconteceu ali.
Eu até poderia decorar de sempre usar o método "contains" quandu for fazer algo do tipo, mas eu realmente gostaria de saber o porque daquilo ali.
Aproveitando que o topico está falando de leitura de arquivos...
Eu estou aprendendo a ler/escrever arquivos em java , usando o BufferedReader/Writer, passando como parâmetro um FileReader/Writer.
Pesquisando pela internet a fora descobri que há também as classes "Scanner" e "PrintStream" que já seria uma "união" dessas classes("File/BufferedReader" e "File/BufferedWriter"), e mas recentemente me falaram da classe "RandomAccessFile" que já faria a função de ler e escrever arquivos ela mesma.
Eu gostaria de saber se é realmente isso, ou cada uma tem uma função diferente da outra ? Há alguma diferença entre o uso de cada uma ?
E se por acaso for só essa questão de "simplificar" o acesso a arquivos, seria uma perda de tempo usar o "BufferedReader/Writer" podendo usar o "RandomAccessFile" ??
Como eu disse ali em cima eu estou começando em java agora, e estou estudando por conta própria (incrível o quando se pode aprender pela internet), porem isso faz com que eu não tenha um professor pra tirar dúvidas, por isso recorri aqui ao pessoal do forum para esclarecer isso ae.
PS: O post ficou meio grande né xD
PS²: O código ali em cima e uma versão mais simples do problema que eu tive quando eu estava fazendo o meu programa, eu criei aquele código só para ilustrar melhor nesse post o meu problema.




