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.hasremaining ()) {sinkchannel.write (buf);}테스트 예에서는 매우 간단한 파이프 라인 작업을 제공하고 먼저 파이프 라인에 콘텐츠를 작성한 다음 파이프 라인에서 콘텐츠를 읽습니다.
package com.test.nio; import 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) 예외 {// Pipeline Pipe (파이프 파이프) (파이프. Pipe.SinkChannel SinkChannel = Pipe.sink (); String NewData = "itbuluoge.com :"+System.CurrentTimeMillis (); bytebuffer buf = bytebuffer.allocate (48); buf.put (newdata.getBytes ());/*쓰기 컨텐츠 (); 파이프 라인*/while (buf.hasremaining ()) {sinkchannel.write (buf);}/*읽기 파이프 라인 생성*/pipe.sourcechannel sourcechanner = pipe.source (); bytebuffer getbuf = bytebuffer.allocate (48); int bytesread = sourcechannel.read (getbuf); getbuf); 파이프 라인에서*/while (getBuf.hasRemaining ()) {system.out.print ((char) getBuf.get ());}}}출력 결과
우리는 필요한 목표를 달성 할 수 있음을 알 수 있습니다. 이 장소에서 프로그래밍 할 때 오류가 있었는데, 즉 파이프 라인을 읽을 때 getBuf.flip ()를 설정하지 않아 데이터를 읽을 수 없었습니다. 이 기능은 매우 중요합니다. 버퍼 읽기 컨텐츠를 완료 한 후에는 읽기 플래그를 설정하고 모든 컨텐츠를 읽기 전에 원래 위치로 포인터를 복원해야합니다.
위의 내용은 Java Nio 파이프 라인의 사용 코드에 관한이 기사에서 공유되는 모든 내용이며, 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!