私は、アフタースクール・クラブ(E.G.サッカー、ホッケー - ユーザーが入力)の範囲を表示するJavaでプログラムを書いています。Java - My ArrayListをファイルに書き込み、そのファイルを元のArrayListに読み込む(ロードする)方法はありますか
public class Club {
private String name;
public Club(String name) {
this.name = name;
}
//There are more methods in my program but don't affect my query..
}
マイ: - クラブは、以下のArrayList
に追加されています:
private ArrayList<Club> clubs = new ArrayList<Club>();
followng方法で名前
public void addClub(String clubName) {
Club club = findClub(clubName);
if (club == null)
clubs.add(new Club(clubName));
}
クラブ」はコンストラクタを持つクラスですプログラムが動作しています - 私はarraylistに新しいクラブオブジェクトを追加できます。私はarraylistを見ることができます。そして、私が好きなものは削除できます。
しかし、今はarrayList(clubs)をファイルに保存しておきたいのですが、後でファイルをロードできるようにしたいのですが、同じarraylistがもう一度存在します。
私はこれについて2つの方法を持っており、それを稼働させようとしていますが、どんな助けや助言もありました。
保存方法(ファイル名は、ユーザによって選択されている)
public void save(String fileName) throws FileNotFoundException {
String tmp = clubs.toString();
PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
pw.write(tmp);
pw.close();
}
Loadメソッド(現在のコード文句を言わない実行 - ?ファイルは文字列ですが、クラブにする必要がある
public void load(String fileName) throws FileNotFoundException {
FileInputStream fileIn = new FileInputStream(fileName);
Scanner scan = new Scanner(fileIn);
String loadedClubs = scan.next();
clubs.add(loadedClubs);
}
私も使用していますGUIを使用してアプリケーションを実行すると、現在のところ、保存ボタンをクリックすると、名前と場所を入力して保存できます。ファイルが表示され、メモ帳で開くことができますが、Club @ c5d8jdj私のリストの各クラブについて)
'Club @ c5d8jdj'はObjectクラスの' toString() 'メソッドの結果です。リストをファイルにどのように保存したいですか?どのような形式ですか? –
toString()はファイルへの書き込みには適していません。シリアライゼーションが必要です。 – Aurand
このようにするには、すべての情報が含まれるようにClub()クラスのtoString()メソッドをオーバーライドしてから、オブジェクトを再作成できるコンストラクタをオーバーライドする必要があります。または、SerializableインタフェースとObjectStreamを参照してください。http://docs.oracle.com/javase/tutorial/essential/io/objectstreams.html – NeplatnyUdaj