Лучшие в Сентябре 2017 г.
Связанных вопросов не найдено

Почему при сериализации в java файл то не записывается, то не перезаписывается?

0
Работаю в eclipse. Могу создать файл, могу не создать файл в самом eclipse, это никак не влияет.
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.util.Scanner;

import javax.swing.JOptionPane;

public class Main {
static Ser ser = new Ser();
static Object e = new Object();
static FileOutputStream fos;
static FileInputStream fis;
static ObjectOutputStream oos;
static ObjectInputStream ois;
public static void main(String[] args){
String c;
try {
fos = new FileOutputStream("file.ser");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
oos = new ObjectOutputStream(fos);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
 try {
fis = new FileInputStream("file.ser");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
 try {
ois = new ObjectInputStream(fis);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
 c = JOptionPane.showInputDialog(null, "s or d");
 switch(c){
 case("s"):{
ser.s = JOptionPane.showInputDialog(null, "String");
try {
oos.writeObject(ser);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, ""+ser.s);
try {
oos.flush();
oos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
oos.flush();
ois.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
 }
 case("d"):{
 try {
e = ois.readObject();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
 ser = (Ser) e;
 JOptionPane.showMessageDialog(null, ""+ser.s);
 try {
 oos.flush();
oos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {

ois.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
 break;
 }
 }
 }
 
}

import java.io.Serializable;

public class Ser implements Serializable{
String s;
}
// если убрать комент с true - файл один раз запишется, будет добавлять значения, но читать будет только первое значение, если не убирать, то при запуске файл будет каждый раз перезаписываться и прочитать значение будет нельзя
21 апреля аноним,  в категории Компьютеры, Интернет
 
Ваш ответ
Отображаемое имя (по желанию):
Анти-спам проверка:

1 Ответ
0
21 апреля аноним, 
у тебя после выполнения одной команды записи или чтения, потоки закрываются. Больше по ним нельзя делать операций. А на ошибки в логах ты похоже и не смотришь.

И явная бага копи-паста: После чтения ты вдруг закрываешь поток вывода.
Copyright © 2016 Вопросы и ответы онлайн - sovety.info | Для связи: site@sovety.info
Мнение редакции может не совпадать с мнением авторов вопросов и ответов.
Индекс цитирования
...