Le pipeline de Java Nio est similaire au pipeline réel, avec deux extrémités, une section en entrée et l'autre section en tant que sortie. C'est-à-dire qu'après avoir créé un pipeline, vous pouvez écrire le pipeline ou lire le pipeline, mais ces deux opérations doivent être effectuées aux deux extrémités. Un peu comme une file d'attente.
Voici un diagramme du principe du tuyau:
Créer un pipeline
Ouvrez le pipeline via la méthode Pipe.Open (). Par exemple:
Pipe pipe = Pipe.open();
Écrire des données sur le pipeline
Pour écrire des données sur le pipeline, vous devez accéder au canal de puits. Comme ça:
Pipe.SinkChannel sinkChannel = pipe.sink();
Écrivez des données à Sinkchannel en appelant la méthode écrite () de Sinkchannel, comme ceci:
String newData = "Nouvelle chaîne à écrire dans un fichier ..." + System.currentTimemillis (); ByteBuffer buf = byteBuffer.AllOcate (48); buf.Clear (); buf.put (newData.getBytes ()); buf.flip (); while (buf.hasreming ()) {Sinkchannel.write (buf);}Dans l'exemple de test, nous offrons une opération de pipeline très simple, écrivons d'abord du contenu dans le pipeline, puis lions le contenu à partir du pipeline.
Package com.test.nio; Importer java.io.ioException; import java.nio.bytebuffer; import java.nio.channels.pipe; public class testpipea {/ ** * @param args * @throws exception * / public static void main (string [] args) lance une exception {// Créer un pipe pipe pipel = tuyau = tuyau. Pipe.sinkChannel SinkChannel = pipe.sink (); string newdata = "itbuluoge.com dit:" + System.currenttimemillis (); bytebuffer buf = bytebuffer.allocy (48); buf.clear (); buf.put (newdata.getbytes ()); buf.flip (); pipeline * / while (buf.hasreminging ()) {SinkChannel.Write (buf);} / * Créer un pipeline de lecture * / pipe.sourceChannel SourceChannel = Pipe.Source (); ByteBuffer getBuf = ByteBuffer.Allocy (48); int BytesRead = SourCeChannel.Read (getBuf); getBuf.flip (); / * Lisez le contenu du pipeline * / while (getBuf.hasreMaining ()) {System.out.print ((char) getBuf.get ());}}}Résultat de sortie
Nous pouvons voir que nous pouvons atteindre les objectifs dont nous avons besoin. Notez que lorsque je programmais à cet endroit, j'avais une erreur, c'est-à-dire que lorsque je lisais le pipeline, je n'ai pas défini getBuf.flip (), ce qui a rendu impossible la lecture des données. Cette fonction est très importante. Après avoir terminé le contenu de lecture de tampon, vous devez définir l'indicateur de lecture et restaurer le pointeur vers la position d'origine avant de pouvoir lire tout le contenu.
Ce qui précède est tout le contenu partagé dans cet article sur le code d'utilisation des pipelines Java Nio, et j'espère que cela sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!