Person 유형이 3 개인 객체를 Person.person에 파일로 작성하고 하나씩 읽지 만 프로그램을 다시 실행할 때 내가 firts 시간에 그것을 실행할 때 쓰는 것과 똑같은 3 개의 objets을 얻는다. 내 프로그램을 실행할 때마다 그 3 개의 오브젝트를 내 파일에 반복해서 추가하는 방법. 나는 그것으로부터 동일한 3 개의 오브젝트 또는 다른 오브젝트가되기를 바란다. 하지만 파일의 끝에 추가해야합니다.자바에서 프로그램을 실행할 때마다 파일에 객체를 추가하는 방법
그리고 그 파일을 읽을 때 그 데이터를 얻는 방법은 무엇입니까?
package pisanjeUFajl;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.List;
public class Serilizacija {
public static void main(String[] args) throws IOException,
ClassNotFoundException {
Person person = new Person("Jovan", "Dukic");
Person person2 = new Person("Stanko", "Maca");
Person person3 = new Person("Tole", "Lopove");
File file = new File("C:\\Users\\Jovan\\Desktop\\Person.person");
if (!(file.exists())) {
file.createNewFile();
}
ObjectOutputStream outputStream = null;
outputStream = new ObjectOutputStream(new BufferedOutputStream(new
FileOutputStream(file)));
outputStream.writeObject(person);
outputStream.reset();
outputStream.writeObject(person2);
outputStream.reset();
outputStream.writeObject(person3);
outputStream.reset();
outputStream.close();
ObjectInputStream inputStream = null;
inputStream = new ObjectInputStream(new BufferedInputStream(new
FileInputStream(file)));
int count = 0;
Person object = null;
나는 내 파일에 더 많은 개체를 추가하지만 난 그들을 읽고 싶어 할 때 내가 가지고 오류 : "주"java.io.StreamCorruptedException가 스레드 예외 : 유효하지 않은 타입 코드 : AC
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at pisanjeUFajl.Serilizacija.main(Serilizacija.java:46)
을
첫 번째 파일에 추가 된 처음 3 개의 개체 만 읽습니다.
try {
while (true) {
object = (Person) inputStream.readObject();
count++;
System.out.println(object);
}
} catch (EOFException error) {
System.out.println("\nEnd of file reacher - objects read = " +
count);
}
inputStream.close();
}
}
내 코드에서 outputStream2를 사용하는 방법에 대해 잘 모릅니다. 당신은 내가 outputStream2.writeObject()를 사용해야 할 때보 다 outputStream.writeObject()를 사용하여 객체를 작성해야한다고 말했기 때문에 내 객체에서 호출 할 수 있습니까? –
outputStream2. writeObject (새 TestSomeObject()); outputStream2 .close(); –