Сериализация, не повышается значение переменной.

 
 
 
Сообщения:7
Всем привет, при написании кода возникла проблема, нужно чтобы после каждой сериализации число увеличивалось на 1.

Main:

package ru.marksblog;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class Main{
	public static void main(String[] args) throws ClassNotFoundException {
		data data=new data();
		
		data.inc();
		try {
			FileOutputStream fos=new FileOutputStream("data.txt");
			try {
				ObjectOutputStream oos=new ObjectOutputStream(fos);
				oos.writeObject(data);
				fos.close();
				oos.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		try {
			FileInputStream fis=new FileInputStream("data.txt");
			try {
				ObjectInputStream ois=new ObjectInputStream(fis);
				data obj=(data)ois.readObject();
				fis.close();
				ois.close();
				System.out.println(obj.getId());
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}


Data:

package ru.marksblog;

import java.io.Serializable;

public class data  implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	int id;
	int a=5;
	
	public void inc(){
		id++;
		a++;
	}
	
	public int getId(){
		return id;
	}

}



Но после выполнения программы начение увеличивается только 1 раз.Что может быть не правильно?
Спасибо!
 
 
Сообщения:2361
Так прежде чем создавать новый объект сначала попробуйте прочесть его из файла, и уж если не удалось, например файла нет, то только тогда создавайте новый объект.
 
 
Сообщения:7
Тогда вот так,читаю файл, создаю новый объект, увеличиваю значение и записываю в файл.
 
 
Сообщения:456
ullf:
Тогда вот так,читаю файл, создаю новый объект, увеличиваю значение и записываю в файл.

Если удалось прочитать файл, то создавать новый объект не надо, надо увеличивать значение на десериализованном из файла объекте.

Т.е. если я правильно понял вашу задачу алгоритм примерно такой:
-пробуем прочитать файл
-если файла нет, то создаем новый объект
-если файл есть, то читаем объект их файла
-увеличиваем значение
-записываем в файл
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет