ObjectInputStream метод skipBytes - PullRequest
       30

ObjectInputStream метод skipBytes

0 голосов
/ 08 апреля 2020
   private static InventoryItems readObjectFromFile(int recordNumber, final int sizeOfRecord) throws IOException, ClassNotFoundException {
        ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("Inventory.dat"));

        objectInputStream.skipBytes(getBytes(recordNumber, sizeOfRecord));
        InventoryItems tempObject = new InventoryItems((InventoryItems) objectInputStream.readObject());

        objectInputStream.close();
        return tempObject;
    }
    private static int getBytes(int recordNumber, int sizeOfRecord) {
        return sizeOfRecord * (recordNumber - 1);
    }

Я делал программу для хранения некоторых предметов инвентаря в файле, и теперь, когда я хочу получить доступ к записи случайным образом на основе номера записи (то есть 1, 2, 3 и т. Д. c) .. Кажется, функция readObjectFromFile всегда возвращает первую запись, которая была добавлена ​​в файл .dat ... хотя я использовал метод skipBytes ... Размер каждой записи составляет 44 байта (20 символов строки и 4 байта). of int) ... Короче говоря, этот фрагмент кода должен работать так, как будто одна запись имеет длину 44 байта, а пользователь вводит '2' в переменную recordNumber, поэтому 44 * (2-1) = 44. 44-й байт байт, с которого должна считываться одна запись, до 88-го байта.

...