Трубопровод в Java Nio аналогичен фактическому трубопроводу, с двумя концами, одним разделом в качестве входного и другого раздела в качестве выхода. То есть после создания трубопровода вы можете написать трубопровод или прочитать трубопровод, но эти две операции должны выполняться на обоих концах. Немного как очередь.
Вот диаграмма принципа трубы:
Создайте трубопровод
Откройте трубопровод с помощью метода Pipe.open (). Например:
Pipe pipe = Pipe.open();
Записать данные в трубопровод
Чтобы записать данные в трубопровод, вам необходимо получить доступ к каналу раковины. Так:
Pipe.SinkChannel sinkChannel = pipe.sink();
Напишите данные в раковине, вызывая метод write () о раковине, например,:
String newData = "Новая строка для записи в файл ..." + system.currenttimemillis (); bytebuffer buf = bytebuffer.allocate (48); buf.clear (); buf.put (newdata.getbytes ()); buf.flip (); while (buf.hasreming ()) {sinkchannel.write (buf);}В примере испытаний мы даем очень простую работу по трубопроводу, сначала записываем контент в трубопровод, а затем читаем контент из трубопровода.
пакет com.test.nio; импорт java.io.ioexception; import java.nio.bytebuffer; импорт java.nio.channels.pipe; public class testpipea {/** * @param args * @throws exception */public void main (string [] args) throw Pipe.sinkChannel SinkChannel = pipe.sink (); string newdata = "itbuluoge.com говорит:"+system.currenttimemilsis (); bytebuffer buf = bytebuffer.allocate (48); buf.clear (); buf.put (newdata.getbytes (););/***************************** Pipeline*/while (buf.hasreming ()) {sinkChannel.write (buf);}/*Создать конвейер чтения*/pipe.sourcechannel soupceChannel = pipe.source (); bytebuffer getbuf = bytebuffer.allocate (48); int bytesread = sourceChanle.read (getBuffer.fuf.flip); Трубопровод*/while (getbuf.hasreming ()) {System.out.print ((char) getBuf.get ());}}}Результат вывода
Мы видим, что мы можем достичь необходимых целей. Обратите внимание, что когда я программировал в этом месте, у меня была ошибка, то есть, когда я читал трубопровод, я не установил getBuf.flip (), что сделало невозможным читать данные. Эта функция очень важна. После завершения контента чтения буфера вы должны установить флаг чтения и восстановить указатель в исходную позицию, прежде чем вы сможете прочитать весь контент.
Выше приведено весь контент, общий в этой статье о коде использования трубопроводов Java Nio, и я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!