155 votes

Transformer un ByteBuffer en String

Est-ce une approche correcte pour convertir un ByteBuffer en String de cette manière ?

String k = "abcd";
ByteBuffer b = ByteBuffer.wrap(k.getBytes());
String v = new String(b.array());

if(k.equals(v))
    System.out.println("it worked");
else
    System.out.println("did not work");

La raison de ma question est que cela semble trop simple, alors que d'autres approches telles que Java : Conversion de String en ByteBuffer et problèmes associés semble plus complexe.

3 votes

Eh bien, tu as essayé ?

6 votes

Oui, je l'ai fait et ça marche. Mais j'ai vu d'autres implémentations plus complexes, telles que stackoverflow.com/questions/1252468/

1 votes

@Doorknob et. al. Il manque l'encodage et son exemple (lorsque la syntaxe sera corrigée) fonctionnera, mais sa méthode n'est toujours pas correcte.

0voto

Binita Bharati Points 393

C'est la seule méthode qui a fonctionné pour moi sur un java.nio.ByteBuffer instance :

String fileContent = new String(bb.array(), StandardCharsets.UTF_8);

Extrait de code correspondant ci-dessous :

import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.channels.FileChannel;
import java.nio.ByteBuffer;

Path path = Paths.get("/home/binita/testbb");
FileChannel fileChannel = FileChannel.open(path, 
                 EnumSet.of(StandardOpenOption.READ
                    )
                 );  

ByteBuffer bb = ByteBuffer.allocate(1024);
int bytesRead = fileChannel.read(bb);
if(bytesRead > 0) {
 String fileContent = new String(bb.array(), StandardCharsets.UTF_8);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X