Witam, mam napisać program umożliwiający przechowywanie listy 10 studentów w pliku txt, pliku binarnego (DataOutputStream) oraz (ObjectOutputStream). Moj problem polega na tym, że jeżeli zapisauje np. najpierw do txt a potem do binarnego i odczytuje tekstowy a potem binarny to w pliku binarnym jest wszytko razy 2?
case 8:
PrintWriter zapis = new PrintWriter("tekstowa_lista.txt");
for (d=0;d<ile ;d++)
{
if(s[d]!=null)
{
zapis.println(s[d].imie);
zapis.println(s[d].nazwisko);
zapis.println(s[d].indeks);
}
}zapis.close();menu();break;
//wczytywanie danych z pliku i wyswietlenie ich w konsoli
case 9:
File file = new File("tekstowa_lista.txt");
Scanner in = new Scanner(file);
while(in.hasNext())
{
String imie = in.next();
String nazwisko = in.next();
String indeks = in.next();
System.out.println(imie+" "+nazwisko+" "+indeks);
}menu();break;
//Zapisz listê studentów do pliku binarnego,
//u¿ywaj¹c DataOutputStream (zapisujemy ka¿de z pól oddzielnie)
case 10:
DataOutputStream out = null;
try {
out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(
"binarny_DataOutput.bin")));
for (d=0;d<ile;d++)
{
if(s[d]!=null)
{
out.writeUTF(s[d].imie);
out.writeUTF(s[d].nazwisko);
out.writeFloat(s[d].indeks);
}
}
// mo¿na zapisywaæ pêtl¹ for w tablicy studentów
//for (int i = 0; i < studenci.length; i++) {
//
// out.writeUTF(nazwisko);
//out.writeInt(wiek);
// }
} finally { out.close(); }menu();break;
//Odczytaj listê studentów z pliku binarnego,
//u¿ywaj¹c DataOutputStream
case 11:
DataInputStream wejscie = null;
try {
wejscie = new DataInputStream(new BufferedInputStream(new FileInputStream(
"binarny_DataOutput.bin")));
try {
while(true)
{
s[ile].imie = wejscie.readUTF();
s[ile].nazwisko = wejscie.readUTF();
s[ile].indeks = (int) wejscie.readFloat();
ile++;
}
} catch (EOFException e) { System.out.println(e); }
} finally { wejscie.close(); }
for (d=0;d<ile;d++)
{
if(s[d] != null)
{ s[d].wyswietl(); }
else {System.out.println("\tKOMUNIKAT: Studentow nie ma w bazie!");}
}menu();break;