Ajuda no dao de consulta no projeto

25 respostas
java
A

package br.com.projeto.dados;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.FileWriter;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.util.ArrayList;

import br.com.projeto.entidades.Consulta;
import br.com.projeto.entidades.Paciente;

public class DaoConsulta {
private File arquivo;

public DaoConsulta() {
	arquivo = new File("consultas.data");
}

public void escreverArquivo(ArrayList<Consulta> paciente) throws IOException {
	FileOutputStream fos = new FileOutputStream(arquivo);
	ObjectOutputStream oos = new ObjectOutputStream(fos);

	oos.writeObject(paciente);

	oos.close();
	fos.close();
}

public ArrayList<T> lerArquivo() throws IOException, ClassNotFoundException {
	ArrayList<Consulta> paciente = null;

	if(!arquivo.exists()) {
		arquivo.createNewFile();
		paciente = new ArrayList<>();
	} else {
		FileInputStream fis = new FileInputStream(arquivo);
		ObjectInputStream ois = new ObjectInputStream(fis);

		paciente = (ArrayList<Consulta>) ois.readObject();

		ois.close();
		fis.close();
	}

	return  (ArrayList<T>) paciente;
}


public void gravaArquivos(){
	File file = new File("ListaConsulta.txt");
	String nome = ""; 
	String conteudo;
	try	{
		FileWriter f = new FileWriter (file, true);
		ArrayList<Consulta> consulta;
		for(int i = 0; i < consulta.size(); i++){
			nome = (consulta.get(i)); 
			conteudo = nome;
			conteudo += "\r\n";
			f.write(conteudo);
		}
		f.close();
	}catch (IOException e)  {
		e.printStackTrace();
	}catch (ParseException e) {
		e.printStackTrace();  
	}
}

}

está dando erro somente no gravar arquivo, me ajudem nisso por favor como posso sanar o erro do gravar arquivo

25 Respostas

R

Se dá erro posta stacktrace.

A

Capturar10

R

nome é do tipo String.
consulta é uma LISTA de Consulta.
N pode atribuir uma Consulta a uma String INCOMPATÍVEL

A

Como devo ajeitar esse método para sanar o erro?

R

Bom, eu n sei da lógica do seu código nem oq vc quer fazer, então perguntando pra mim a resposta é tira a linha q n terá o erro. rsrs

A
em relação ao meu código esse gravar arquivos é pra poder gravar os arquivos do arraylist de consultas,  que os atributos de marcar uma consulta seja:

private String nomePaciente;

private String nomeMedico;

private String data;

private String hora;

private ArrayList consulta;
R

Vo tentar adivinhar então, tenta ai:
consulta.get(i).getNomePaciente()

A

Capturar11
está assim agora tentei importar sobre o parseException não funcionou e fica dando erro em outras linhas.

R

Não velho, mantem o nome
nome = consulta.get(i).getNomePaciente()

A

Capturar12
Pronto e o erro do Parse Exception ? Já que o import não funciona e dá erro em outras linhas

R

Depende doq ele ta reclamando ali, tmq ler.
Remove o catch e ve oq dá.

A

Capturar13
Ficou assim

R

Não.
Vc precisa conhecer o básico da sintaxe ou n vai conseguir fazer nada.

A

eu tento mexer no código mas não tô tendo sucesso, o pior que tem vários erros nesse projeto.

J

Está seguindo qual material pra aprender?

A

caelum

J

Se ficou pulando algo, melhor voltar pro início. Ou pelo menos revise a parte sobre exception. Mas como você está perdido na sintaxe como o colega falou, melhor revisar desde o início.

A

Pra ser exato não assimilei bem algumas coisas em relação a serialização

F

Opa a sua IDE está reclamando de um erro checado, coloque o mouse em cima do “x” vermelho no lado esquerdo e verá a descrição do erro.

Tem um erro no teu try catch, essa estrutura serve para tratar erros no código, deve estudar sobre isso para continuar o seu programa, aprenda o básico depois tende tirar as dúvidas, sem o básico nem dúvidas da para tirar.

A

O que eu entendi bem sobre o try e catch é que o try a gente põe um código de risco, algo que possa gerar uma exceção, no catch a gente pode tratar essa exceção, se o bloco try executar seus comandos perfeitamente o bloco catch não é chamado. Não consegui aplicar ainda isso no meu projeto.

L
  • troca o nome do arquivo para apenas Lista.txt
  • Muda de IOException para Exception
  • Coloca o System.out.print depois do printStackTrace
  • Apague as outras duas linhas
  • mande executar
  • Vai ocorrer um erro e ele será impresso no Console

image

Assim você pode ter uma ideia de como aplicar o try-catch.
Quais mais duvidas vc tem?

A

Minha dúvida no momento é:
consulta pode receber null nesse código, fica dando erro e pede sempre o null porque fica dependendo do null?
Capturar14

L

A variável nome é string.
O código consulta.get(i) vai te retornar um OBJETO do tipo Consulta.
Talvez você esteja querendo pegar o nome da consulta,então, na teoria, teria uma função getNome().

Exemplo:
nome = consulta.get(i).getNome();

Fazendo isso, você pode apagar o trecho catch (ParseException e) { e.printStackTrace(); }

Vê se isso te ajuda…

L

Aqui você esta querendo percorrer a lista consulta.
A lista consulta somente foi declarada na linha 60, não foi preenchida.
Imagine que você pediu pro Java criar uma caixa, mas colocou nada dentro dessa caixa.
A caixa então esta vazia.
Se você tentar procurar alguma coisa dentro dessa caixa, vai encontrar nada, justamente pq ela ainda esta vazia.
E é isso que o java ta querendo te dizer na linha 61.
“Olha, você ta querendo procurar alguma coisa dentro de uma caixa vazia, tem certeza disso?”

Entendeu o que você precisa fazer?

J

Só aplique quando for necessário, usar try catch sem objetivo concreto não faz sentido.

Criado 21 de junho de 2018
Ultima resposta 22 de jun. de 2018
Respostas 25
Participantes 5