そこで、私が見たテレビ番組や映画を追跡するプログラムを作成しています。私は 2 つのクラス (テレビと映画) を持っており、全員を保持する配列を持っています。この配列を保存して、プログラムを使用するたびに同じリストを編集できるようにするにはどうすればよいですか。新しいエピソードを見るたびに、新しい情報で配列を更新したいからです。では、基本的に、プログラムを実行するたびに arya を保存するだけでなく配列をロードするには、どのような手順を使用する必要がありますか?
3 に答える
さらに参照できるように配列を保存するには、クラスをシリアライズ可能にする必要があります (たとえば、 を実装することによってSerializable
)。これが意味することは、オブジェクトを一連のバイトに変換して、ファイルに保存したり、ネットワーク経由で送信したりできることです。これは、後でメモリ内のオブジェクトを再作成するために使用できます。
次に、これを実行してデータをファイルに保存できます。
ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream("myarray.ser")
);
out.writeObject(myArray);
out.flush();
out.close();
次のように読み返すことができます。
ObjectInputStream in = new ObjectInputStream(new FileInputStream("myarray.ser"));
MyType[] array = (MyType[]) in.readObject();
in.close();
オブジェクトをシリアル化してディスクに書き込むこともできますが...配列をファイルに出力して読み戻す方が簡単だと思います。配列内の各要素をファイルに書き込むことができますかなり簡単にループし、同じように簡単に読み戻せます。他の人が言ったように、ArrayList または同様の構造を調べるのは時間の価値があります! 例:
ファイルに書き込むには:
ArrayList<String> list = new ArrayList<String>();
// add stuff the the ArrayList
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("data.txt")));
for( int x = 0; x < list.size(); x++)
{
out.println(list.get(x));
}
out.close()
ファイルから読み取るには:
ArrayList<String> list = new ArrayList<String>();
Scanner scan = new Scanner(new File("data.txt"));
while(scan.hasNext())
{
list.add(scan.next());
}
まず、疫病のような配列を避ける必要があります...Collections
代わりに使用してください。これは、他のものとは別に、必要に応じて自動的にサイズが拡張されます(これが必要になります)。
array と a のどちらを使用するかに関係なく、オブジェクトをラップする aList
に書き込むことで、オブジェクトをディスクにシリアル化できます。ObjectOutputStream
FileOutputStream
配列/リスト内のオブジェクトは、Serializable
すべてのクラス フィールドと同様に を実装する必要があることに注意してください。
配列/リストを読み戻すには、ObjectInputStream
ラッピング aから読み取りますFileInputStream
。
そのようなコードの無数の例を Google で検索できます。