Это для домашней работы, которую я делаю на своей прогулке, изучая Java.java класс записи в файл
Я пишу программу, и все работает как ожидалось, кроме чтения/записи в файл.
У меня есть один класс с именем Medico
, который содержит только одну строку (typeOfMedico
) и один int (valorFacturado
). Medico
является подклассом Pessoa
. Pessoa
содержит данные, такие как имя и адрес. public class Medico extends Pessoa implements Serializable
- основная функция на классе Medico
.
В моем основном классе, названном Clinica
, я прошу ввести пользователя и в конце создаю new Medico
, что его добавили в Arraylist по имени medico
.
Для чтения и записи в файл, я создал этот класс:
package clinica;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class FicheiroObjectos {
private ObjectInputStream iS;
private ObjectOutputStream oS;
public void abreLeitura(String nomeDoFicheiro) throws IOException {
iS = new ObjectInputStream(new FileInputStream(nomeDoFicheiro));
}
public void abreEscrita(String nomeDoFicheiro) throws IOException {
oS = new ObjectOutputStream(new FileOutputStream(nomeDoFicheiro));
}
public Object leObjecto() throws IOException, ClassNotFoundException {
return iS.readObject();
}
public void escreveObjecto(Object o) throws IOException {
oS.writeObject(o);
}
public void fechaLeitura() throws IOException {
iS.close();
}
public void fechaEscrita() throws IOException {
oS.close();
}
public void leFicheiroMedicos() {
Medico medicos;
while (true) {
try {
medicos = (Medico) this.leObjecto();
Clinica.medicos.add(medicos);
} catch (EOFException eof) {
break;
} catch (ClassNotFoundException cnf) {
System.out.print("\nClassNotFoundException!\nO programa vai terminar\n");
System.exit(-1);
} catch (IOException ioe) {
System.out.print("\nErro ao ler o ficheiro!\nO programa vai terminar\n");
System.exit(-1);
}
}
}
public void escreveFicheiroMedicos() {
try {
for (Medico medicos: Clinica.medicos) {
this.escreveObjecto(medicos);
}
} catch (IOException e) {
System.out.print("\nErro ao escrever no ficheiro!\nO programa vai terminar\n");
System.exit(-1);
}
}
}
На моем главном классе я создал эти две функции:
public static void insereDadosExistentes() {
try {
FicheiroObjectos file = new FicheiroObjectos();
file.abreLeitura("Medicos.dat");
file.leFicheiroMedicos();
file.fechaLeitura();
} catch (IOException ioe) {
}
}
public static void gravarMedicos() {
try {
FicheiroObjectos file = new FicheiroObjectos();
file.abreEscrita("Medicos.dat");
file.escreveFicheiroMedicos();
file.fechaEscrita();
} catch (IOException e) {
System.out.print("\nErro ao escrever no ficheiro!\nO programa vai terminar\n");
System.exit(-1);
}
}
}
Затем добавляют insereDadosExistentes()
в начале моя main
и добавили gravarMedicos()
сразу после добавления Medico
в мой medicos
arraylist.
Когда я запускаю мою программу (На первом запуске файл Medicos.dat
, не существует) и создать Medico
, Medico
добавляется к моему ArrayList и файл Medicos.dat
создается. Затем я остановить программу и при следующем запуске, который теперь имущим в Medicos.dat
файл, я получаю ошибку:
Erro ao ler o ficheiro!
O programa vai terminar
Проблемы в записи файла или чтении файла? Я знаю, что ошибка указана при чтении файла, но это может быть из-за того, что извинение файла не выполняется должным образом.
Если я пытаюсь открыть Medicos.dat
Я могу видеть некоторые символы, но ничего не связано с информацией, которую я вводил, поэтому я даже не знаю, хорошо ли написано файл.
Помните, что все файлы, кроме обработки файлов, работают должным образом.
Можете ли вы указать мне В некоторых направлениях?
favolas
Пожалуйста [перевести вывод программы] (HTTP: // translate.google.com/?um=1&ie=UTF-8&hl=ru&sa=N&tab=wT#auto|en|Erro%20ao%20ler%20o%20ficheiro!%0AO%20programa%20vai%20terminar) на английский! Это, кажется, означает .. * «Ошибка чтения файла! Программа закончится« *. –
Вместо этой выходной строки введите 'e.printStackTrace()'. –
Я подумал, что это отличный способ поупражняться в португальском. Это был португальский, не так ли? :) – sarnold