как читать данные файла из файла/десериализовать объект. Я создал файл, который является двоичным файлом, который содержит список данных компаний, которые я могу добавить новую компанию и связанные с ней данные, но когда я хочу, чтобы читать обратно все файлы ДАННЫЕ это дает только первая компания ДАННЫЕ и печатает нулевой ..what является ниже проблемой является то, что я сделалDeserializing a Object только считывает данные
public class CompanyInfo extends Company {
int counter=0;
Scanner in=new Scanner(System.in);
private ArrayList<Company> companyinfo;
public CompanyInfo() {
companyinfo=new ArrayList<Company>();
}
public void registercompany() {
System.out.println("Enter Company Name \n");
companyName=in.nextLine();
System.out.println("\n");
System.out.println("Enter Company Code \n");
companyCode=in.nextLine();
System.out.println("\n");
System.out.println("Enter the Share Number \n");
shareNo=in.nextInt();
System.out.println("\n");
System.out.println("Enter Closing Rate \n");
closingRate=in.nextDouble();
Company cin=new Company(companyName,companyCode,shareNo,closingRate);
companyinfo.add(cin);
try {
ObjectOutputStream outObjFile =new ObjectOutputStream(new FileOutputStream("companies.dat",true));
Company company = new Company(companyName,companyCode,shareNo,closingRate);
outObjFile.writeObject(company);
outObjFile.writeChars("\n");
outObjFile.close();
} catch (Exception e) {
// TODO: handle exception
System.out.println("A file error has occurred. Sorry.");
System.out.println(e.getMessage());
}
counter++;
}
public void viewcompany(){
try {
ObjectInputStream inObjFile = new ObjectInputStream(
new FileInputStream("companies.dat"));
System.out.println(inObjFile.readObject()); // displays first object
Company company = (Company)inObjFile.readObject(); // restores object
System.out.println(company); // displays restored object
inObjFile.close(); // finished with the file now.
} catch (Exception e) {
System.out.println(e.getMessage());
}
Вы только сериализации/десериализации компании, если вы хотите, чтобы получить все из них вы должны сериализации/deserialize 'companyinfo' –
Мне не понравилось! не могли бы вы объяснить? –
Я угадываю флаг 'append = true' для' FileOutputStream', что может быть попытка добавить каждое записанное значение в файл. Однако, 'ObjectOutputStream' пишет специальные значения маркера в поток, поэтому вам нужно делать больше работы, если вы хотите читать несколько отдельных потоков объектов из одного файла. –