Сериализация пользовательских объектов в Java — исключение java.io.FileNotFoundException

#java #serialization #filenotfoundexception #objectoutputstream #custom-object

#Ява #сериализация #исключение filenotfoundexception #поток вывода объекта #пользовательский объект

Вопрос:

У меня есть метод, который требует, чтобы я сериализовал объекты пользовательского класса «Фракция». Когда я пытаюсь сохранить объект, я получаю исключение java.io.FileNotFoundException. Что я мог бы сделать, чтобы помочь решить эту проблему?

 public static void method3()   {  //Serialize the Fraction class. Save all the objects to a file named   // lt;your namegt;Fractions.dat  //replace lt;your namegt; with your name in the file name!  //Be sure to close() the file after writing the data.   Fraction[] fa =  {  new Fraction(35, 18), new Fraction(125, -30), new Fraction(-125, -30),  new Fraction(0, 76), new Fraction(98, 12)  };   ArrayListlt;Fractiongt; alf = new ArrayListlt;Fractiongt;();  alf.add(new Fraction(81, 9));  alf.add(new Fraction(-75, 250));  alf.add(new Fraction(2380, 754));      //save all objects to the file here    String fileName = "lt;your namegt;Fractions.dat";   try {   ObjectOutputStream serializer = new ObjectOutputStream(new FileOutputStream(fileName));  serializer.writeObject(fa);   serializer.writeObject(alf);  serializer.close();  } catch(FileNotFoundException e) {  e.printStackTrace();  }   catch (IOException e) {  System.out.println("A problem occurred when serializing.");  e.printStackTrace();  }    }  //I made sure to have the Fraction class implement Serializable as demonstrated below  import java.io.Serializable;  public class Fraction implements Comparablelt;Fractiongt;, Serializable {    

Комментарии:

1. Вам не "lt;your namegt;Fractions.dat" кажется, что это допустимое имя файла?

2. Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией для определения адекватного ответа.

Ответ №1:

Вы используете недопустимое имя файла:

 String fileName = "lt;your namegt;Fractions.dat";  

это недопустимое имя практически в любой операционной системе. Совершенно очевидно, что вы должны заменить lt;your namegt; .