Witam, mam problem z napisaniem metody która pozwoli odczytać zapisany plik binarny i informacje w nim zawarte przekaże do odpowiednich zmiennych.
Plik wygląda następująco:
pierwsza liczba - ilość punktów
kolejna liczba - wartość współrzędnej x
kolejna liczba - wartość współrzędnej y
zapisywanie do pliku wyglada tak:
public void actSaveFile() throws IOException {
System.out.println("open");
jfc = new JFileChooser();
int wynik = jfc.showSaveDialog(this);
if(wynik == JFileChooser.SAVE_DIALOG)
return;
//FileWriter fw = new FileWriter(jfc.getSelectedFile());
File fe = jfc.getSelectedFile();
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(fe));
DataOutputStream fw = new DataOutputStream(bos);
try {
fw.writeInt(points.size());
//fw.write("\t");
for (int i = 0; i < points.size(); i++) {
//fw.writeInt(points.get(i).x + "\t" + points.get(i).y + "\t");
fw.writeInt(points.get(i).x);
fw.writeInt(points.get(i).y);
}
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
fw.close();
}
}
odczyt:
public void actLoadFile() throws IOException {
System.out.println("fsdfsd");
boolean d = true;
int index, x ,y, i;
jfc1 = new JFileChooser();
int wynik = jfc1.showOpenDialog(jfc1);
if(wynik != JFileChooser.OPEN_DIALOG) {
return;
}
File fr = jfc1.getSelectedFile();
//System.out.println(jfc1.getSelectedFile());
BufferedInputStream buff = new BufferedInputStream(new FileInputStream(fr));
DataInputStream br = new DataInputStream(buff);
String s;
System.out.println("fdsf");
i = 0;
try {
while ((s = br.readLine()) != null) {
index = br.readInt();
System.out.println("index: " + index);
//br.readChar();
points.setSize(index);
//for(int i = 0; i < index; i++) {
x = br.readInt(); // TUTAJ DOSTAJĘ WYJĄTEK EOFException
System.out.println("x: " + x);
//br.readChar();
y = br.readInt();
System.out.println("y: " + y);
//br.readChar();
points.set(i, new Point(x, y));
//}
d = false;
i++;
//s = br.readLine();
//System.out.println(s);
}
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
System.out.println(points.size());
br.close();
rysujPunkty();
d = false;
}
}
kod się kompiluje, ale wywala mi wyjątek EOFException, natomiast zmienna index otrzymuje dobrą wartość
liczę, że wszystko dokładnie wyjaśniłem, pozdrawiam!