Почему я получаю исключение BufferUnderflowException?А что значит код ошибки? - PullRequest
0 голосов
/ 19 сентября 2019

Я написал некоторый код, и каждый раз, когда я получаю это сообщение об ошибке:

Exception in thread "main" java.nio.BufferUnderflowException
at java.nio.Buffer.nextGetIndex(Unknown Source)
at java.nio.HeapByteBuffer.get(Unknown Source)
at Parsing_MLP.readFile_Buffer(Parsing_MLP.java:65)
at Parsing_MLP.main(Parsing_MLP.java:166)

Как я могу исправить сообщение об ошибке с «Неизвестным источником»?Здесь вы можете увидеть мой код:

            while (inChannel.read(buffer) > 0) {
            buffer.flip();
            for (int i = 0; i < buffer.limit(); i++) {
                if (Byte.compare(buffer.get(), M) == 0) {
                    pos = buffer.position();
                    if (Byte.compare(buffer.get(pos), L) == 0 && (Byte.compare(buffer.get(pos + 1), P) == 0) && buffer.capacity()>pos+2) {
                        System.out.println("Capacity : "+ buffer.capacity() + " aktuelle Position: "+ i);
                        int currentposition = (pos + 2); 
                        buffer.position(pos);
                        position.add(currentposition);
                        while (Byte.compare(buffer.get(pos), M) != 0 && Byte.compare(buffer.get(pos + 1), L) != 0
                                && (Byte.compare(buffer.get(pos + 2), P) != 0) && buffer.capacity()>pos+2) {
                            pos++;
                        }
                        counter = 0;
                        tmpbuffer = buffer;
                        ending.add(pos);
                        i = pos;
                    }
                }
            }
            buffer.clear(); // do something with the data and clear/compact it.
        }
...