Я добавляю Object с этим кодом.
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
public class ClaseAppendObjectStream extends ObjectOutputStream
{
public ClaseAppendObjectStream(OutputStream os) throws IOException
{
super(os);
}
protected void writeStreamHeader() throws IOException
{
reset();
}
}
И это правильно записывает его в мой файл с помощью методов writeObject, но когда я использую «readObject ()» с «objectinputStream».
Дополнительная информация: я использовал «readObjectOverride» (используя подкласс), и это дало мне ту же ошибку.
Оказалось, что ошибка:
«Недопустимый заголовок потока: 79757200».
Я решил эту ошибку, НО он неправильно прочитал файл «.dat».
В моем файле .dat было 4 строки, но я прочитал только 1 строку. Мой код для чтения таков:
ObjectInputStream objetoInStr = new ObjectInputStream(new FileInputStream(sPath))
{
protected void readStreamHeader() throws IOException
{
}
};
ClassEmployer[] getData = (ClassEmployer[])objetoInStr.readObject();
objetoInStr.close();
String sPhrase="";
for(ClassEmployer e : getData )
{
sPhrase=sPhrase+"Name: " + e.getName() + " Salary: "+ e.getSalary();
}
objTPane.setText(sPhrase);
Он показывает мне только последнюю строку.
Я пишу свои строки так:
ClassEmployer[] employers= new ClassEmployer[1];
employers[0]= new ClassEm,ployer(objctotext1.getText().trim(),objecttext2.getText().trim());
FileOutputStream objetoFileOutputStream = new FileOutputStream(sPath,true);
BufferedOutputStream objetooutputBuffer = new BufferedOutputStream(objetoFileOutputStream);
ClaseAppendObjectStream objetoOutStr = new ClaseAppendObjectStream(objetooutputBuffer);
objetoOutStr.writeObject(employers)