i write ArrayLists into a file. I read it with FileInputStream. But always just the "first" ArrayList is appears by reading. I tried it with readInt() / wirteInt(), and loops, but there were always thrown exceptions, by calling readInt() --> EOF I want to read all ArrayList from this File into an ArrayList. My application needs to be persistent, so i serialized the ArrayLists.
write into file:
try {
FileOutputStream fos = new FileOutputStream(_cache, true);
ObjectOutputStream os = new ObjectOutputStream(fos);
// os.writeInt(newValueList.size()); // Save size first
os.writeObject(newValueList);
os.flush();
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
read from file:
List cachedValueList = new ArrayList<String>();
ObjectInputStream o = new ObjectInputStream(new FileInputStream("caching.io"));
// int count = o.readInt(); // Get the number of regions
try {
cachedValueList.add(o.readObject());
} catch (EOFException e) {
o.close();
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
os.writeObject(newValueList);- what is type ofnewValueList?cachedValueList.add(o.readObject());- what do you intend to read? It seems that you intend to read aString. I think that you try to write some kind of list and then read a list object and add it to another list (with implicit convertion to String)readObject()doesn't return null at end of stream: it throwsEOFException. 'Invalid type code: AC' means you used more than oneObjectOutputStreamon the same socket: don't do that.