2012-12-18, 18:43
#1
Först och främst så vet jag att man inte behöver spara enskilda objekt i en arraylist för sig när man sparar sina objekt i en fil, utan man kan spara hela arraylisten. Dock så påbörjade jag det på det sättet och måste nu bara bevisa att det går att göra så (vilket det självklart går!).
Objekten sparas precis som dom ska i fil.obj, men när jag ska läsa in objekten så får jag ett stort problem!
Här är koden som sparar objekten i filen:
--------------------------
try
{
FileOutputStream file = new FileOutputStream("fil.obj");
ObjectOutputStream someObjects = new ObjectOutputStream(file);
for (Hej a : hejArrayList)
someObjects.writeObject(a);
}
catch (IOException e)
{
System.out.println("IO-fel. Hejdå!");
System.exit(1);
}
--------------------------------
Här kommer sedan koden i mitt main som försöker läsa in objekten från filen och konvertera tillbaka objecten till Hej-objekt:
--------------------------------
try
{
FileInputStream file = new FileInputStream("fil.obj");
ObjectInputStream someObjects = new ObjectInputStream(file);
for (Object a : someObjects)
{
a = (Hej)someObjects.readObject();
hejArrayList.add(a);
}
}
catch (FileNotFoundException e)
{
System.out.println("Ingen fil funnen!");
}
catch (IOException e)
{
System.out.println("IO-fel!");
}
catch (ClassNotFoundException e)
{
System.out.println("Class-fel! Class ej funnen!");
}
---------------------------
Delvis gnäller den på att objekten jag försöker kasta in i ArrayListen kennel är av typen Object, vilket är konstigt eftersom jag innan det castar om objecten till ett Hej-objekt.
Dessutom så klagar den i raden "for (Object a : someObjects)" och säger "Can only iterate over an array or an instance of java.lang.iterable". Men det verkar ju skumt, man måste väl kunna spara lösa objekt, eller? Eller måste det alltid sparas i nån typ av array/lista?
Jag provade att köra en vanliga for-loop, typ "for (int y = 0; y <= someObjects.availible(); y++)", men det resulterade bara i att det första Hej-objektet laddades in, medans de andra Hej-objekten glömdes bort.
Tips?
Objekten sparas precis som dom ska i fil.obj, men när jag ska läsa in objekten så får jag ett stort problem!
Här är koden som sparar objekten i filen:
--------------------------
try
{
FileOutputStream file = new FileOutputStream("fil.obj");
ObjectOutputStream someObjects = new ObjectOutputStream(file);
for (Hej a : hejArrayList)
someObjects.writeObject(a);
}
catch (IOException e)
{
System.out.println("IO-fel. Hejdå!");
System.exit(1);
}
--------------------------------
Här kommer sedan koden i mitt main som försöker läsa in objekten från filen och konvertera tillbaka objecten till Hej-objekt:
--------------------------------
try
{
FileInputStream file = new FileInputStream("fil.obj");
ObjectInputStream someObjects = new ObjectInputStream(file);
for (Object a : someObjects)
{
a = (Hej)someObjects.readObject();
hejArrayList.add(a);
}
}
catch (FileNotFoundException e)
{
System.out.println("Ingen fil funnen!");
}
catch (IOException e)
{
System.out.println("IO-fel!");
}
catch (ClassNotFoundException e)
{
System.out.println("Class-fel! Class ej funnen!");
}
---------------------------
Delvis gnäller den på att objekten jag försöker kasta in i ArrayListen kennel är av typen Object, vilket är konstigt eftersom jag innan det castar om objecten till ett Hej-objekt.
Dessutom så klagar den i raden "for (Object a : someObjects)" och säger "Can only iterate over an array or an instance of java.lang.iterable". Men det verkar ju skumt, man måste väl kunna spara lösa objekt, eller? Eller måste det alltid sparas i nån typ av array/lista?
Jag provade att köra en vanliga for-loop, typ "for (int y = 0; y <= someObjects.availible(); y++)", men det resulterade bara i att det första Hej-objektet laddades in, medans de andra Hej-objekten glömdes bort.
Tips?