writeobject serialized serialize serializar objetos objects como array java android serialization arraylist

serialized - serializar un arraylist java



Problema de serialización y deserialización de ArrayList (1)

private void serializeQuotes(){ FileOutputStream fos; try { fos = openFileOutput(Constants.FILENAME, Context.MODE_PRIVATE); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(quotes); oos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); } } @SuppressWarnings("unchecked") private void deserializeQuotes(){ try{ FileInputStream fis = openFileInput(Constants.FILENAME); ObjectInputStream ois = new ObjectInputStream(fis); quotes = (ArrayList<Quote>) ois.readObject(); } catch (FileNotFoundException e) { e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }catch(ClassNotFoundException e){ e.printStackTrace(); } }

Cada vez que trato de serializar un archivo, aparece el error: FileNotFound. No estoy seguro por qué. Aquí está mi código FileHelper:

package org.stocktwits.helper; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutput; import java.io.ObjectOutputStream; import java.util.ArrayList; import org.stocktwits.model.Quote; public class FileHelper { // Returns the contents of the file in a byte array. public static byte[] getBytesFromFile(File file) throws IOException { InputStream is = new FileInputStream(file); // Get the size of the file long length = file.length(); // You cannot create an array using a long type. // It needs to be an int type. // Before converting to an int type, check // to ensure that file is not larger than Integer.MAX_VALUE. if (length > Integer.MAX_VALUE) { // File is too large } // Create the byte array to hold the data byte[] bytes = new byte[(int)length]; // Read in the bytes int offset = 0; int numRead = 0; while (offset < bytes.length && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) { offset += numRead; } // Ensure all the bytes have been read in if (offset < bytes.length) { throw new IOException("Could not completely read file "+file.getName()); } // Close the input stream and return bytes is.close(); return bytes; } public static void serializeQuotes(ArrayList<Quote> quotes){ try { // Serialize to a file ObjectOutput out = new ObjectOutputStream(new FileOutputStream("quotes.ser")); out.writeObject(quotes); out.close(); // Serialize to a byte array ByteArrayOutputStream bos = new ByteArrayOutputStream() ; out = new ObjectOutputStream(bos) ; out.writeObject(quotes); out.close(); // Get the bytes of the serialized object //byte[] buf = bos.toByteArray(); } catch (IOException e) { System.out.println(e); } } @SuppressWarnings("unchecked") public static void deserializeQuotes(ArrayList<Quote> quotes){ try { // Deserialize from a file File file = new File("quotes.ser"); ObjectInputStream in = new ObjectInputStream(new FileInputStream(file)); // Deserialize the object quotes = (ArrayList<Quote>) in.readObject(); in.close(); // Get some byte array data byte[] bytes = FileHelper.getBytesFromFile(file); // see Reading a File into a Byte Array for the implementation of this method // Deserialize from a byte array in = new ObjectInputStream(new ByteArrayInputStream(bytes)); quotes = (ArrayList<Quote>) in.readObject(); in.close(); } catch (ClassNotFoundException e) { System.out.println(e); } catch (IOException e) { System.out.println(e); } } }