Пробую сериализовать обьект. Идея такая: Есть класс HA(что-то типа человека) у него есть поля 1)Имя 2)Что делает 3)Id 4)Дата и есть методы 1)write 2)read Когда я пытаюсь считать второй обьект из файла то собственно в методе read вылетает исключение "java.io.StreamCorruptedException: invalid type code: AC"
Вот класс HA:
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import static java.lang.System.out;
import java.io.Serializable;
public class HA implements Serializable {
private String name; //Имя
private String work; //Дело
private String date; //Дата
private int id; //номер записи
private String getDate() { //Получение даты в формате дд.мм.гг
Date currentDate = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat();
return dateFormat.format(currentDate).toString();
}
public HA (String name,String work,int id) { //Конструктор
this.name = name;
this.work = work;
this.date = getDate();
this.id = id;
}
public void display(HA ha) {
out.println("---------------------");
out.println("id:"+ha.id);
out.println("Кто:"+ha.name);
out.println("Что:"+ha.work);
out.println("Когда:"+ha.date);
out.println("---------------------");
}
}
А вот и методы с main:
import java.io.FileInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.io.EOFException;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.IOException;
public class Ser1 {
static String PATH="IO4.txt";
public static void main(String[] args) throws Exception {
write("Рик","Убрал мусор",13);
read();
}
static void write(String name,String work,int id) throws Exception {
try(FileOutputStream fos = new FileOutputStream(PATH,true);
ObjectOutputStream oos = new ObjectOutputStream(fos);) {
HA ha = new HA(name,work,id);
oos.writeObject(ha);
oos.flush();
}catch (Exception e) {
e.printStackTrace();
}
}
static void read() throws Exception {
ArrayList<HA> List = new ArrayList<>();
try (FileInputStream fis = new FileInputStream(PATH);
ObjectInputStream ois = new ObjectInputStream(fis);) {
while(true) {
try{
List.add((HA) ois.readObject());
}catch (EOFException e) {
break;
}
}
}catch (Exception e) {
e.printStackTrace();
}
for (HA ha:List) {
ha.display(ha);
}
}
}
Пробовал разные варианты,читал похожие,но не смог найти ответа. Помогите найти ошибку. Спасибо.
import java.io.Serializable;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class HA implements Serializable {
private static final long serialVersionUID = 1L;
private static final String DATE_FORMATTER_PATERN = "dd.MM.yyyy";
private final String name; //Имя
private final String work; //Дело
private final LocalDate date; //Дата
private final int id; //номер записи
public HA(int id, String name, String work) { //Конструктор
this.id = id;
this.name = name;
this.work = work;
this.date = LocalDate.now();
}
@Override
public String toString() {
return new StringBuilder()
.append("\r\n---------------------")
.append("\r\nid:").append(id)
.append("\r\nКто:").append(name)
.append("\r\nЧто:").append(work)
.append("r\nКогда:").append(date.format(DateTimeFormatter.ofPattern(DATE_FORMATTER_PATERN)))
.append("\r\n---------------------")
.toString();
}
}
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.util.List;
public class Ser1 {
static String PATH = "IO4.txt";
public static void main(String[] args) throws Exception {
List<HA> list = new ArrayList<>();
list.add(new HA(13, "Рик", "Убрал мусор"));
write(list);
System.out.println(read());
}
static void write(final List<HA> list) throws Exception {
try (ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(PATH)))) {
oos.writeObject(list);
oos.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
static List<HA> read() throws Exception {
try (ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(PATH)))) {
return (List<HA>) ois.readObject();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости