Estou com um probeminha aqui, estou lendo as informações de um arquivo, mas o boolean ele lê sempre false, mesmo que no arquivo seja true ele lê sempre o false, o que poderia ser?
Eu estou usando pra ler do arquivo BufferedReader e escrevendo no arquivo com BufferedWriter.
Problema ao ler boolean do arquivo
10 Respostas
posta o código por favor
posta o código por favor
public void salvarConta(Contas conta) throws ErroInfraEstrutura{ // Salvando conta no arquivo
File file = new File(CAMINHO_ARQUIVO);
if(!file.exists()){
try {
file.createNewFile();
}
catch (IOException ex) {
throw new ErroInfraEstrutura("Erro ao criar o arquivo [" + CAMINHO_ARQUIVO + "]", ex);
}
}
try{
BufferedWriter bw = new BufferedWriter(new FileWriter(file, true));
bw.write(Integer.toString(conta.getNumber()));
bw.newLine();
bw.write(conta.getName());
bw.newLine();
bw.write(Double.toString(conta.getValue()));
bw.newLine();
bw.write(Boolean.toString(conta.isSituation()));
bw.newLine();
bw.close();
}
catch(Exception e){
throw new ErroInfraEstrutura("Erro ao escrever dados da Conta no arquivo.", e);
}
}
O arquivo tá assim:
int
String
double
boolean
int
String
double
boolean
...
public Collection<Contas> obtemTodasContas() throws ErroInfraEstrutura{ // Lista todas as contas.
File file = new File(CAMINHO_ARQUIVO);
if(!file.exists()){
try{
file.createNewFile();
}
catch(IOException e){
throw new ErroInfraEstrutura("Erro ao criar o arquivo ["+ CAMINHO_ARQUIVO + "]", e);
}
}
try{
Collection<Contas> account = new ArrayList<Contas>();
BufferedReader bf = new BufferedReader(new FileReader(file));
for(;;){
String line = bf.readLine();
if(line == null){
break;
}
int number = Integer.parseInt(line);
line = bf.readLine();
String name = line;
line = bf.readLine();
double value = Double.parseDouble(line);
line = bf.readLine();
boolean situation = Boolean.getBoolean(line);
Contas contas = new Contas(number, name, value, situation);
account.add(contas);
}
return account;
}
catch(Exception e){
throw new ErroInfraEstrutura("Erro ao ler o banco de arquivo ["+ CAMINHO_ARQUIVO +"]", e);
}
}
Veja só, você trasnformou seu boolean em uma String.
O método Boolean.getBoolean(line) faz o seguinte
o certo seria
boolean situation = Boolean.valueOf(line);
Tem certeza que as outras informações ele está lendo corretamente??
O métodoBoolean.getBoolean(line)faz o seguinteo certo seria
boolean situation = Boolean.valueOf(line);
Agora deu certo, pra variar esses erros sempre por bobeirinha.
Obrigado a todos pela ajuda.
Ele tá lendo sim, não sei se da forma correta mas tá lendo. 
O método Boolean.getBoolean(line) faz o seguinte
Esse é um dos métodos misteriosos que existem desde o Java 1.0 e nunca foram “extirpados”, para evitar problemas de compatibilidade com versões antigas.
Eles existem, mas para confundir sua cabeça.
Por que ele está na classe java.lang.Boolean?
Deveria haver uma classe SystemProperty (por exemplo) que servisse para concentrar essas coisas.
Deve ser coisa do Gosling - não foi ele que convencionou que Calendar.JANUARY = 0 em vez de 1, mas provavelmente foi ele que estabeleceu que Date.setYear (100) seta o ano para 2000, por exemplo.
Pois é thingol eu achei bem estranho ele estar na classe Boolean, me surpreendi até quando eu o vi, ainda mais sabendo que você poderia dar um System.getProperties().containsKey(“property”) ou será que o método containsKey da classe Property faz uma chamada para Boolean.getBoolean!! Ou vice-e-versa!!! :lol: