Запись объекта в файл - PullRequest
       21

Запись объекта в файл

0 голосов
/ 08 февраля 2011

Мне нужно записать весь объект в файл и извлекать его всякий раз, когда я хочу.Предположим, я хочу написать объект класса «Студент», который имеет такие атрибуты, как оценки, имя, бросок и т. Д. И когда я хочу получить доступ к атрибутам и манипулировать ими позже, когда мне это нужно.Можете ли вы показать мне, как это сделать?

Ответы [ 7 ]

4 голосов
/ 08 февраля 2011

Использовать ObjectOutputStream.

 public class Student implements Serializable {

 }

 FileOutputStream fos = new FileOutputStream("Students.dat");
 ObjectOutputStream oos = new ObjectOutputStream(fos);

 Student someStudent = new Student();

 oos.writeObject(someStudent);

 oos.close();

Вот так.

1 голос
/ 08 февраля 2011

Если у вас есть простые JavaBeans, вы можете использовать java.beans.XMLEncoder / XMLDecoder.

Еще один способ - использовать JAXB.

1 голос
/ 08 февраля 2011

Ознакомьтесь с API сериализации Java .

1 голос
/ 08 февраля 2011

Самый простой способ сделать то, что вы ищете, это Сериализация объектов.

По сути, вы добавляете интерфейс к вашему Student классу, Serializable, который позволит вам передавать объекты этого класса в ObjectOutputStream. Вы можете использовать этот поток для записи этих студентов в файлы на диске. Позже они могут быть прочитаны через ObjectInputStream для повторного изменения.

1 голос
/ 08 февраля 2011

Попробуйте Сериализация .

0 голосов
/ 13 февраля 2011

Эти методы должны помочь вам, ваш ученик должен реализовать сериализуемое, Используйте это как:

ученик s1 = новый ученик (); objectToFile ( "test.ser", s1); Student s2 = fileToObject ("test.ser");

public static void objectToFile(String fileName, Serializable object){
    ObjectOutputStream oos = null;
    try {
        oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(fileName)));
        oos.writeObject(object);
    } catch (Exception e) {
        System.out.println(e.getMessage());
    } finally{
        try {
            oos.flush();
            oos.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

public static Object fileToObject(String fileName){
    ObjectInputStream ois = null;
    try {
        ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(fileName)));
        return ois.readObject();
    } catch (Exception e) {
        return null;
    } finally{
        try {
            ois.close();
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }
}
0 голосов
/ 08 февраля 2011

Самый простой способ - просто реализовать интерфейс Serializable в Java: http://download.oracle.com/javase/1.4.2/docs/api/java/io/Serializable.html

public class Student implements Serializable {
}

Затем вы можете читать / писать, используя методы readObject / writeObject.

...