Za prve neviem preco si si daval tu namahu a robil si class Dielo abstraktne a potom si vytvoril nove class-i, ktore dedili z Diela aj ked obe su uplne rovnake. Toto rob az ked naozaj ten class o niec rozsiris a to uz nebudes len takto zapisovat. A obsah v hociakom inom zdedenom classe bude znova len String, alebo sa mylim? Druha vec, zbytocne serializujes ak to nebudes ukladat ako objekt. Nakoniec je dobre veci splachnut ked zapisujes, cize flush(). Tu som napisal nieco co funguje:
Diela.java
import java.util.Calendar;
import java.util.GregorianCalendar;
class Dielo{
private String autor, nazov, vydavatelstvo, obsah;
private Calendar datumVydania;
public Dielo(){
this("", "", "", "", new GregorianCalendar());
}
public Dielo(String autor, String nazov, String vydavatelstvo, String obsah, Calendar datumVydania){
this.autor = autor;
this.nazov = nazov;
this.vydavatelstvo = vydavatelstvo;
this.obsah = obsah;
this.datumVydania = datumVydania;
}
public void setAutor(String autor){
this.autor = autor;
}
public void setNazov(String nazov){
this.nazov = nazov;
}
public void setObsah(String obsah){
this.obsah = obsah;
}
public void setVydavatelstvo(String vydavatelstvo){
this.vydavatelstvo = vydavatelstvo;
}
public void setDatumVydania(Calendar datumVydania){
this.datumVydania = datumVydania;
}
public String getAutor(){
return autor;
}
public String getNazov(){
return nazov;
}
public String getVydavatelstvo(){
return vydavatelstvo;
}
public String getObsah(){
return obsah;
}
public Calendar getDatumVydania(){
return datumVydania;
}
}
Kniznica.java
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.PrintWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.text.SimpleDateFormat;
class Kniznica{
private ArrayList<Dielo> kniznica;
public Kniznica(){
kniznica = new ArrayList<Dielo>();
}
public void vlozDielo(Dielo dielo){
kniznica.add(dielo);
}
public void vlozDiela(Dielo[] diela){
for(Dielo d: diela)
kniznica.add(d);
}
public void zmazDielo(int index){
kniznica.remove(index);
}
public void zmazDielo(Dielo dielo){
kniznica.remove(dielo);
}
public Dielo getDielo(int index){
return kniznica.get(index);
}
public void zapisDoSuboru(String nazovSuboru){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
try{
PrintWriter pw = new PrintWriter( new BufferedWriter( new FileWriter(nazovSuboru) ) );
for(Dielo dielo : kniznica){
pw.println(dielo.getNazov());
pw.println(dielo.getAutor());
pw.println(dielo.getVydavatelstvo());
pw.println(sdf.format(dielo.getDatumVydania().getTime()));
pw.println(dielo.getObsah());
pw.println();
pw.flush();
}
pw.close();
}
catch(IOException ioe){
System.err.println(ioe);
}
}
public static void main(String[] arg){
Kniznica k = new Kniznica();
Dielo d[] = {
new Dielo("Kolmogorov, Fomin", "Zaklady teorie funkcii a funkcionalnej analyzy", "NechceSaMiHladat", "teoria mnozin, teoria miery, MP a TP, topologia, funkcionalna analyza, etc...", new GregorianCalendar(1972,0,1)),
new Dielo("Kluvanek, Misik, Svec", "Matematika 1", "SVTL", "Uvod do diferencialneho a integralneho poctu", new GregorianCalendar(1956,0,1)),
new Dielo("Kluvanek, Misik, Svec", "Matematika 2", "SVTL", "Nekonecne rady, Funkcionalne rady, Mocninne rady, Fourierove rady, Diferencialne rovnice, Viacrozmerne a Krivkove integraly, Teoria funkcii komplexnej premennej", new GregorianCalendar(1961,0,1))
};
k.vlozDiela(d);
k.zapisDoSuboru("literatura.txt");
}
}
Citat budes obdobne pomocou FileReader-u, BufferedReader-u, InputStreamReaderu a FileInputStream-u. Najdi si v API ako sa to pouziva. Uvedom si ze to mas zapisane v urcitom poradi, v tomto poradi musis aj citat.