Piszę program w Javie, który wyświetla wiele klubów po-przedszkolnych (piłkarska E.G., Hokej - wprowadzane przez użytkownika). Kluby są dodawane do następującego ArrayList
:Java - Jak mogę zapisać swoją tablicę ArrayList do pliku i odczytać (wczytać) ten plik do oryginalnej tablicy ArrayList?
private ArrayList<Club> clubs = new ArrayList<Club>();
Przez followng Metoda:
public void addClub(String clubName) {
Club club = findClub(clubName);
if (club == null)
clubs.add(new Club(clubName));
}
'klubu' to klasa z konstruktorem - nazwa:
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..
}
My Program działa - pozwala mi dodać nowy obiekt Club do mojej listy tablic, mogę przeglądać listę i mogę usunąć wszystko, co chcę itp.
Jednak teraz chcę zapisać tę właściwość arrayList (trefle) w pliku, a następnie chcę mieć możliwość późniejszego załadowania pliku i ponownie tę samą listę tablic.
Mam dwie metody na to (patrz poniżej), i starałem się, aby działało, ale nie miał anyluck, każda pomoc lub rada byłaby doceniona.
Zapisz Sposób (nazwa pliku jest wybrany przez użytkownika)
public void save(String fileName) throws FileNotFoundException {
String tmp = clubs.toString();
PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
pw.write(tmp);
pw.close();
}
metoda obciążenia (Aktualny kod przyzwyczajenie uruchomić - Plik jest ciągiem znaków, ale musi być Klub
public void load(String fileName) throws FileNotFoundException {
FileInputStream fileIn = new FileInputStream(fileName);
Scanner scan = new Scanner(fileIn);
String loadedClubs = scan.next();
clubs.add(loadedClubs);
}
Jestem również przy użyciu innego? GUI do uruchomienia aplikacji, i w tej chwili mogę kliknąć przycisk Zapisz, co pozwala mi wpisać nazwę i lokalizację i zapisać go.Plik wygląda i może być otwarty w Notatniku, ale wyświetla się jako coś takiego jak Club @ c5d8jdj (dla każdego klubu na mojej liście)
To, co widzisz "Club @ c5d8jdj", jest wynikiem metody "toString()" klasy Object. Jak chcesz, aby lista została zapisana w pliku? Jaki format? –
toString() nie nadaje się do zapisu do pliku. Chcesz serializacji. – Aurand
Jeśli chcesz to zrobić w ten sposób, musisz zastąpić metodę toString() klasy Club(), aby zawierała ona wszystkie informacje, a następnie Konstruktora, który jest w stanie odtworzyć obiekt. Lub spójrz na interfejs Serializable i ObjectStreams: http://docs.oracle.com/javase/tutorial/essential/io/objectstreams.html – NeplatnyUdaj