はじめに
この記事は、JAVAを使用しているプログラマーを対象にしている。特に、ファイルに書き込んだオブジェクトを全て読み込みたいが、先頭にある1つ目しか読み込むことができないという問題に遭遇している方に役立つ。 この記事を読むことで、JAVAでファイルに書き込んだオブジェクトを全て読み込む方法がわかり、実際に実装できるようになる。
前提知識
この記事を読み進める上で、以下の知識があるとスムーズです。 * JAVAの基本的な知識 * ファイル操作の基本的な知識
JAVAでファイルに書き込んだオブジェクトを全て読み込む方法
JAVAでは、ファイルに書き込んだオブジェクトを読み込むために、ObjectInputStreamクラスを使用する。ただし、通常の方法では先頭にある1つ目のオブジェクトしか読み込むことができない。
オブジェクトの書き込み方法
まずは、オブジェクトの書き込み方法について説明する。以下のコードは、オブジェクトをファイルに書き込む例である。
Javaimport java.io.*; class Person implements Serializable { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } public class Main { public static void main(String[] args) throws IOException, ClassNotFoundException { Person person1 = new Person("John", 30); Person person2 = new Person("Alice", 25); try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("persons.dat"))) { oos.writeObject(person1); oos.writeObject(person2); } } }
オブジェクトの読み込み方法
次に、オブジェクトの読み込み方法について説明する。以下のコードは、ファイルからオブジェクトを読み込む例である。
Javaimport java.io.*; class Person implements Serializable { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } public class Main { public static void main(String[] args) throws IOException, ClassNotFoundException { try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("persons.dat"))) { while (true) { try { Person person = (Person) ois.readObject(); System.out.println("Name: " + person.getName() + ", Age: " + person.getAge()); } catch (EOFException e) { break; } } } } }
解決策
上記のコードでは、whileループを使用してファイルの終端まで読み込み、オブジェクトを読み込む。EOFExceptionが発生すると、ループを終了する。
まとめ
本記事では、JAVAでファイルに書き込んだオブジェクトを全て読み込む方法について説明した。
- オブジェクトの書き込み方法
- オブジェクトの読み込み方法
- 解決策
この記事を通して、JAVAでファイルに書き込んだオブジェクトを全て読み込む方法がわかり、実際に実装できるようになった。次回は、より発展的な内容について記事にする予定です。
参考資料
