Java'da bir dizi okul sonrası kulüpleri (E.G. Futbol, Hokey - kullanıcı tarafından girilen) görüntüleyen bir program yazıyorum. kulüpleri aşağıdaki ArrayList
içine eklenir: followng YöntemiyleJava - ArrayListimi bir dosyaya nasıl yazabilirim ve bu dosyayı orijinal ArrayList'e okuyabilir (yükleyebilir)?
private ArrayList<Club> clubs = new ArrayList<Club>();
:
public void addClub(String clubName) {
Club club = findClub(clubName);
if (club == null)
clubs.add(new Club(clubName));
}
Kulübü 'bir yapıcı olan bir sınıftır - isim:
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..
}
Benim Program çalışıyor - benim arraylist içine yeni bir Club Object eklemenize izin veriyor, ben arraylist görüntüleyebilir ve ben istediğim herhangi birini silebilirim.
Ancak, şimdi bu arrayList (kulüpler) dosyasını bir dosyaya kaydetmek istiyorum ve daha sonra dosyayı daha sonra yüklemek istiyorum ve aynı arraylist tekrar orada olmak istiyorum.
Bunun için iki yönteme sahibim (aşağıya bakın) ve çalışmayı denemeye çalışıyorum, ancak herhangi bir yardım almamış, herhangi bir yardım ya da öneri takdir edilecektir.
kaydet Yöntemi (fileName kullanıcı tarafından seçilir)
public void save(String fileName) throws FileNotFoundException {
String tmp = clubs.toString();
PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
pw.write(tmp);
pw.close();
}
Yük yöntemi (Güncel kod çalıştırmak alışkanlık - Dosya bir dizedir ama Kulübü olması gerekiyor ben de bir kullanıyorum
public void load(String fileName) throws FileNotFoundException {
FileInputStream fileIn = new FileInputStream(fileName);
Scanner scan = new Scanner(fileIn);
String loadedClubs = scan.next();
clubs.add(loadedClubs);
}
? Uygulamayı çalıştırmak için GUI ve şu anda bir isim ve konum yazıp kaydetmeme izin veren Kaydet düğmesine tıklayabilirim. Dosya görünür ve Not Defteri'nde açılabilir ancak Club @ c5d8jdj gibi bir şey olarak görüntülenebilir (listemdeki her Kulüp için
.210
Kullandığınız şey, Club @ c5d8jdj Object sınıfının "toString()" yönteminin sonucudur. Listede dosyanın nasıl kaydedilmesini istersiniz? Hangi format? –
toString() dosyaya yazmak için uygun değil. Seri hale getirme istiyorsun. – Aurand
Bu şekilde yapmak isterseniz, Club() sınıfının toString() yöntemini geçersiz kılmanız gerekir, böylece tüm bilgileri ve sonra nesneyi yeniden oluşturabilen bir Oluşturucu içerir. Veya Serializable arabirimine ve ObjectStreams'e bakın: http://docs.oracle.com/javase/tutorial/essential/io/objectstreams.html – NeplatnyUdaj