У меня возникла странная проблема, которую я, похоже, не понимаю. Я делаю программу, которая считывает данные из файла. Но когда я читаю данные, я сразу получаю исключение EOFException.FileInputStream.available() возвращает байты, но ObjectInputStream.available() возвращает 0
Итак, я проверил с .available(), если файл был пуст или нет. И у меня получился странный результат. FileInputStream сказал, что файл был заполнен (249 байт), но ObjectInputStream сказал, что файл пуст (или не может быть прочитан).
EOFException at: "int signatureSize = ois.readInt();"
FileInputStream fin = new FileInputStream("input(signedbyLK).ext");
System.out.println("fin available: " + fin.available());
ObjectInputStream ois = new ObjectInputStream(fin);
System.out.println("ois avaiable: " + ois.available());
int signatureSize = ois.readInt();
byte[] sigBytes = (byte[]) ois.readObject();
String text = (String) ois.readObject();
ois.close();
EDIT: Я добавлять содержимое файла следующим образом:
File newFile = new File("input(signedbyLK).ext");
newFile.createNewFile();
System.out.println("Succesfully created new file: " + newFile.getName());
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(newFile));
oos.writeObject(sigBytes.length);
oos.writeObject(sigBytes);
oos.writeObject(readInput());
oos.close();
Я отредактировал мой вопрос. Теперь вы можете видеть, в каком порядке я заполняю файл. – Guido
Ваши прочитанные вызовы даже не соответствуют вызовам для записи. Ваш первый вызов записи - это объект, но ваше первое чтение - это int – Biu
Вау, я этого даже не заметил. Спасибо! – Guido