Extrahiert String aus ReadOnly java.nio.ByteBuffer

8

Wie extrahierst du einen String aus einem schreibgeschützten ByteBuffer? Ich kann die ByteBuffer.array () -Methode nicht verwenden, da sie eine ReadOnlyException auslöst. Muss ich ByteBuffer.get (arr []) verwenden und es kopieren, um die Daten zu lesen und einen String zu erstellen? Es erscheint verschwenderisch, eine Kopie zu erstellen, nur um sie zu lesen.

    
Verhogen 08.05.2014, 20:42
quelle

2 Antworten

16

Sie können Charset.decode(ByteBuffer) , die ein ByteBuffer in ein CharBuffer umwandelt. Dann rufe einfach toString() an. Beispielcode:

%Vor%     
Jon Skeet 08.05.2014, 20:44
quelle
0

Der ReadOnly-Puffer kann Ihnen keinen Zugriff auf das Array geben, sonst könnten Sie ihn ändern. Hinweis: Der String hat noch eine Kopie als char []. Wenn das ein Problem ist, würde ich die Verwendung eines Nur-Lese-Puffers überdenken.

    
Peter Lawrey 08.05.2014 20:45
quelle

Tags und Links