아래 코드는 IOException을 반환합니다. 여기 내 주요있어 :Serializable ArrayList - IOException 오류
public class Main
{
public static void main(String[] args) {
Book b1 = new Book(100, "The Big Book of Top Gear 2010", "Top Gear",
"BBC Books", 120, "Book about cars.");
Book b2 = new Book(200, "The Da Vinci Code", "Dan Brown", "Vatican", 450,
"A fast paced thriller with riddles.");
Book b3 = new Book(300, "Le Petit Nicolas", "Sempe Goscinny", "Folio", 156,
"The adventures of petit Nicolas.");
ArrayList<Book> biblia = new ArrayList<Book>();
biblia.add(b1);
biblia.add(b2);
biblia.add(b3);
File f = new File("objects");
try {
FileInputStream fis = new FileInputStream("objects");
int u = fis.read();
if (u != -1) {
ObjectInputStream ois = new ObjectInputStream(fis);
Bookstore b = (Bookstore) ois.readObject();
ois.close();
} else {
Bookstore b = new Bookstore(biblia);
FileOutputStream fos = new FileOutputStream("objects");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(b);
oos.close();
}
} catch (FileNotFoundException ex1) {
System.out.println("File not found.");
} catch (IOException ex2) {
System.out.println("IO Error.");
} catch (ClassNotFoundException ex3) {
System.out.println("Class not found.");
}
}
이 내가 개체 스트림에서 사용하는 orded에서 예약 개체의 ArrayList를 저장하기 위해 단지 사용하는 서점 클래스입니다.
public class Bookstore implements Serializable {
private ArrayList<Book> myBooks = new ArrayList<Book>();
public Bookstore(ArrayList<Book> biblia) {
myBooks = biblia;
}
}
모든 올바른 라이브러리도 가져 왔습니다. 내가하려는 것은 : 파일이 비어 있지 않으면, 거기에서 ArrayList (arraylist를 포함하는 서점 개체)를 읽는다. 비어 있으면 새 것을 씁니다. 문제는 내가 반환하는 유일한 것은 "입출력 오류"입니다. 나는 왜 그런지 이해할 수 없다.
파일이 존재하는지 여부를 테스트하는 방법에 대해 더 많이 생각해야합니다. :). 당신이 지금하고있는 방식은 실제로 작동하지 않습니다. catch (IOException ex2) 블록 내부에 –
이 있으면 "ex2.printStackTrace();"를 추가하십시오. 귀하의 예외가 발생한 곳에 대한 세부 정보를 얻으십시오. –
감사합니다. 나는 아무것도 변하지 않았지만 지금은 효과가있는 것 같습니다. : S – Felice