ArrayList の Java ファイルへの保存

Javaは、オブジェクトを、そのオブジェクトのデータと、その型とオブジェクトに保存されているデータの型という情報を含むビットのシーケンスとして表すことができるメカニズムを提供します。

直列化されたオブジェクトがファイルに正常に保存されると、問題なくファイルから読み取って逆直列化できます。オブジェクトとそのデータを表すビットを使用して、メモリ内にオブジェクトを再作成できます.

ObjectInputStream クラスと ObjectOutputStream クラスは、ArrayList の内容を .

ArrayList は既定でシリアル化可能です。つまり、ArrayList.

Serializable インターフェイスを実装する必要はありません。>ArrayList を

このクラスは、ArrayList オブジェクトをビット・ストリームとして持つテスト・ファイルを作成します。テスト ファイルは、ビットストリームからオブジェクトを保存および再作成するために使用されます。この例では、ArrayList が既定で既にシリアル化されているため、Serializable インターフェイスを実装していないことに注意してください。

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

public class SerializeArrayList {

public static void main(String[] args) {
ArrayList al=new ArrayList();
al.add("hello world");
al.add("こんにちは世界");

{
FileOutputStream fileOut = new FileOutputStream("test");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(al);
out.close();
fileOut.close();
System.out.println("\nシリアル化が正常に完了しました...\n");

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Runtime:

シリアル化が正常に完了しました...
開いた後に作成されたバイナリの内容は、次のようになります:

serialize arraylist java

このクラスでは、上記のクラスを使用して保存したテストファイルからビット形式でデータストリームを取得します。返されたオブジェクトをキャストを使用して ArrayList に変換し、ArrayList の要素を表示します。出力を見ると、シリアル化前にリストに追加したのと同じ項目が得られます

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;

public class SerializeArrayList {

public static void main(String[] args) {

//read
ArrayList<文字列>arraylist= new ArrayListです<文字列>();
{
FileInputStream を試す fileIn = new FileInputStream("test");
ObjectInputStream ois = new ObjectInputStream(fileIn);
arraylist = (ArrayList) ois.readObject();
ois.close();
fileIn.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO 自動生成された catch block
e.printStackTrace();
}

System.out.println("データの読み取り: \n");
for(String o:arraylist)
System.out.println(o);
}
}
Runtime:

読み取りデータ: 

hello world
hello world
それでおしまい!あなたの質問をすることを躊躇しないでください;)