222 votes

Quelle est l’utilisation de ByteBuffer en Java ?

Quels sont les exemples d’applications pour un `` en Java ? Veuillez dresser la liste des exemples de scénarios où il est utilisé. Merci !

154voto

kelloti Points 4157

Cette est une bonne description de ses utilisations et les lacunes. Vous essentiellement utiliser chaque fois que vous avez besoin de jeûner I/O à basse altitude. Si vous alliez à mettre en œuvre un protocole TCP/IP ou si vous écriviez une base de données (SGBD) cette classe me serait utile.

103voto

ykombinator Points 1137

Le ByteBuffer classe est important, car il constitue une base pour l'utilisation des canaux en Java. ByteBuffer classe définit six catégories d'opérations lors de l'octet de tampons:

  • Relative et absolue de l' obtenir et de mettre des méthodes de lecture et d'écriture d'un seul octets;

  • Par rapport vrac obtenir des méthodes de transfert des séquences contiguës d'octets à partir de ce buffer dans un tableau;

  • Par rapport vrac mettre des méthodes de transfert des séquences contiguës d'octets à partir d'un tableau d'octets ou de certains autres octets de la mémoire tampon dans ce tampon;

  • Relative et absolue de l'obtenir et de mettre les méthodes lire et écrire les valeurs des autres types de primitives, leur traduction vers et à partir de séquences d'octets dans un ordre d'octets;

  • Méthodes de création de vue tampons, qui permettent à un octet de la mémoire tampon pour être considéré comme un tampon contenant des valeurs d'un autre type primitif; et

  • Méthodes de compactage, de dupliquer, et de découpage d'un tampon d'octets.

Example code : Putting Bytes into a buffer.

    // Create an empty ByteBuffer with a 10 byte capacity
    ByteBuffer bbuf = ByteBuffer.allocate(10);

    // Get the buffer's capacity
    int capacity = bbuf.capacity(); // 10

    // Use the absolute put().
    // This method does not affect the position.
    bbuf.put((byte)0xFF); // position=0

    // Set the position
    bbuf.position(5);

    // Use the relative put()
    bbuf.put((byte)0xFF);

    // Get the new position
    int pos = bbuf.position(); // 6

    // Get remaining byte count
    int rem = bbuf.remaining(); // 4

    // Set the limit
    bbuf.limit(7); // remaining=1

    // This convenience method sets the position to 0
    bbuf.rewind(); // remaining=7

28voto

deepujain Points 118

JAVA IO à l'aide de flux orienté Api est effectuée à l'aide d'un tampon pour le stockage temporaire de données au sein de l'espace utilisateur. Les données lues à partir du disque de DMA est d'abord copié à des tampons dans l'espace noyau, qui est ensuite transfert à la mémoire tampon dans l'espace utilisateur. Il y a donc une surcharge. Éviter qu'il peut obtenir gain considérable des performances.

On ne pouvait ignorer ce tampon temporaire dans l'espace utilisateur, si il y avait un moyen directement accès à la mémoire tampon dans l'espace du noyau. JAVA NIO fournit un moyen de le faire.

ByteBuffer est parmi plusieurs tampons fournis par JAVA NIO. C'est juste un récipient ou cuve de stockage pour les données de lecture ou d'écriture de données. Au-dessus de comportement est obtenu par l'affectation directe de la mémoire tampon à l'aide de allocateDirect() de l'API de la mémoire Tampon.

La Documentation Java des Octets de la mémoire Tampon contient des informations utiles.

16voto

David_O Points 335

Dans Android, vous pouvez créer la mémoire tampon partagée entre C++ et Java (avec la méthode directAlloc) et manipuler les deux côtés.

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