J'essaie d'écrire un objet de type "HashMap" dans un fichier & le récupérer lorsque mon programme s'exécute à nouveau. Mais j'ai fait face à une exception EOFException lorsque j'essaie de lire cet objet et que l'objet n'est pas lu dans le fichier. J'utilise les méthodes close() flush() & lorsque j'ai écrit l'objet pour le FileOutputStream & ObjectOutputStream. Aussi je crée OutputStream & InputStream ensemble pour mon dossier. voici mon code:Un problème avec java Flux d'objets lors de l'écriture dans le fichier
DataOutputStream outToFile;
DataInputStream inFromFile;
ObjectOutputStream writeTableToFile;
ObjectInputStream readTableFromFile;
File tableFile;
public DNS(){
try {
tableFile = new File("table.txt");
outToFile = new DataOutputStream(new FileOutputStream(tableFile));
writeTableToFile = new ObjectOutputStream(outToFile);
inFromFile = new DataInputStream(new FileInputStream(tableFile));
readTableFromFile = new ObjectInputStream(inFromFile);
HashMap table2 = (HashMap) readTableFromFile.readObject();
if (table2 == null)
table=new HashMap(100);
else
table = table2;
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch(EOFException e){
table=new HashMap(100);
}
catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
et voici le code pour objet écrit:
table.put(NameField.getText(), IPField.getText());
try {
//writeTableToFile.reset();
writeTableToFile.writeObject(table);
writeTableToFile.flush();
} catch (IOException e1) {
e1.printStackTrace();
}
Cordialement, sajad
Un flux de sortie et un flux d'entrée vers un même fichier sont-ils tous deux ouverts en même temps? Est-ce une bonne idée? Créez un flux d'entrée ouvert lorsque vous essayez de lire, puis fermez-le. Créez et ouvrez le flux de sortie lorsque vous voulez écrire, puis fermez-le. –