2013-12-25 1 views
2

Я создал массив объектов типа Employee, и я помещаю объекты в файл .txt. Ниже метод, который принимает Служащие объекты параметра и помещает его в файл .txtКак устранить исключение ClassCastException при извлечении массива объектов из TXT-файла?

public void putDataintoFile(Employee[] obj) { 
    File file = new File("employeedetails.txt"); 
    try { 
     FileOutputStream fos = new FileOutputStream(file); 
     try { 
      ObjectOutputStream oos = new ObjectOutputStream(fos); 
      oos.writeObject(obj); 
      oos.close(); 
      fos.close(); 
     } 
     catch (IOException ex) { 
      Logger.getLogger(EmployeeService1.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
    catch (FileNotFoundException ex) { 
     Logger.getLogger(EmployeeService1.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

Это выше метод вызывается из отдельного «Execetor класса», который затем называет свой метод getDataFromFile() ниже

public void getDataFromFile() { 
    System.out.println("Reached HERE"); 
    try { 
     FileInputStream fin = new FileInputStream("employeedetails.txt"); 
     try { 
      ObjectInputStream oin= new ObjectInputStream(fin); 
      try { 
       Employee e =(Employee)oin.readObject(); 
       System.out.println("Reached HERE"); 
       System.out.println(e.toString()); 
      } catch (ClassNotFoundException ex) { 
       Logger.getLogger(EmployeeService1.class.getName()).log(Level.SEVERE, null, ex); 
      } 
      oin.close(); 
      fin.close(); 
     } 
     catch (IOException ex) { 
      Logger.getLogger(EmployeeService1.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
    catch (FileNotFoundException ex) { 
     Logger.getLogger(EmployeeService1.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

Об исполнителе Я получаю сообщение об ошибке.

Exception in thread "main" java.lang.ClassCastException: [LMypackage.Employee; cannot 
be cast to Mypackage.Employee 
at Mypackage.EmployeeService1.getDataFromFile(EmployeeService1.java:225) 
at Mypackage.Executor.main(Executor.java:71) 

Я реализовал Serializable интерфейс в моем Сотрудника Classs

кто-нибудь может мне помочь?

ответ

3

Вы пишете массив и пытаетесь прочитать один объект.

Это указано в сообщении об исключении, которое приводит к коду чтения/записи, что довольно очевидно, несмотря на все лишние вертикальные пробелы.

Кроме того, в общем случае не вызывайте текстовые файлы .txt.

+0

'code' Сотрудник e [] = новый сотрудник [2]; для (int i = 0; i <2; i ++) { e [i] = (Сотрудник) oin.readObject(); System.out.println (e [i]); } 'code' Я попытался это, но все та же ошибка –

+0

его работы я не вступал объекты в файл с помощью цикла Я изменил мою' code' putData() tofor (INT I = 0; я <2; i ++) { oos.writeObject (obj [i]); } oos.close(); fos.close(); 'code' и мой метод getData для ' code' Сотрудник e [] = новый сотрудник [2]; для (int i = 0; i <2; i ++) { e [i] = (Сотрудник) oin.readObject(); System.out.println (e [i]); } 'code' –

Смежные вопросы