Elxan24-03
@Elxan24-03

Ошибка консоли при Сериализации.Как исправить?

Здравствуйте.Я создал программу где пользователь может зарегистрироваться.Для того чтобы сохранить данные я использую сериализацию.Но проблема в том что при чтении из файла консоль даёт ошибку.Как мне это исправить?

Это данные для регистрации
import java.io.Serializable;
import java.util.Scanner;

public class RegistrationData implements Serializable {
    public String name;
    public String surname;
    public int age;
Scanner sc=new Scanner(System.in);
    public String getName() {
        return name;
    }

    public void setName(String name) {
        System.out.println("Введите ваше имя");
        name=sc.nextLine();
        this.name = name;
    }

    public String getSurname() {
        return surname;
    }

    public void setSurname(String surname) {
        System.out.println("Введите вашу фамилию");
        surname=sc.nextLine();
        this.surname = surname;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        System.out.println("Ведите ваш возрост");
        int Age= sc.nextInt();
        this.age = age;
    }
}

Создал объект этого класса в другом классе
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Scanner;

public class Registration implements Serializable {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
         RegistrationData u = new  RegistrationData();
        u.setName(u.getName());
        u.setSurname(u.getSurname());
        u.setAge(u.getAge());
        try {
            FileOutputStream fis = new FileOutputStream("Users.bin");
            ObjectOutputStream ous = new ObjectOutputStream(fis);
            ous.writeObject(u);
            ous.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

И создал класс где я буду узнать данные в файле
import java.io.*;
import java.util.Scanner;

public  class Users implements Serializable {
    public static void main(String[] args) {

        try {
            FileInputStream fis=new FileInputStream("Users.bin");
            ObjectInputStream ous=new ObjectInputStream(fis);

Registration newMath=(Registration) ous.readObject();
ous.close();
            System.out.println(newMath);

        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }



    }
}
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
@rPman
java.util.Scanner не умеет быть сериализованным
можно исключить его из сериализации, добавив в определении ключевое слово transient
или же состряпать свой класс на его основе добавив к нему имплементацию Serializable
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы