Java List Iterator для двоичного файла - вопрос

Можно ли перебрать двоичный файл с определенной позицией, указанной пользователем? Я пытался придумать, как это сделать, но я не нахожу никаких указаний. Вот код, над которым я работаю:

System.out.println("Enter name of file: ");
    String filename = in.nextLine();
    File file = new File(filename);
    if (file.exists()) {
        System.out.println(file.getAbsoluteFile());
        RandomAccessFile raf = new RandomAccessFile(file, "r");
        System.out.println("Size: " + file.length() + " bytes.");
        System.out.println("Attempting to record file to AList");
        AList<Byte> fileList = new AList<>(); 
        raf.seek(0);
        for (int i = 0; i < raf.length(); i++) {
            fileList.add(raf.readByte());
        }
        System.out.print("Enter byte positon to navigate to: ");
        long pos = in.nextLong();
        in.nextLine();
        ListIterator<Byte> itr = fileList.listIterator(0);
        if (pos >= 0 && pos < file.length()){
        int i = 0;
        while(i < 5 && itr.hasNext() == true){
            raf.seek(pos);
            byte b = raf.readByte();
            System.out.print(((b >= 0 && b <= 15)?"0":"") + Integer.toHexString((int)b & 0x00FF) + " ");
            i++;
        }

Я даже не совсем уверен, что то, что я написал, логически правильно. Я пытаюсь сделать так, чтобы пользователь указал позицию в двоичном файле, а затем проверяю, находится ли это в пределах диапазона файлов. Затем он должен иметь возможность вывести следующие 5 байтов из этой позиции, используя итератор. Я не совсем уверен насчет итератора.

Всего 1 ответ


Вы можете просто изменить цикл чтения файла на a) игнорировать байты до запрошенной начальной позиции, b) прочитать и распечатать следующие 5 прочитанных байтов, затем c) выйти.


Есть идеи?

10000