자바 PipedReader 클래스
그만큼 Java의 PipedReader 클래스 의 일부입니다 java.io 패키지이며 파이프에서 문자 데이터를 읽는 데 사용됩니다. 이 클래스는 한 스레드가 PipedWriter를 사용하여 데이터를 쓰고 다른 스레드가 이를 사용하여 읽는 스레드 간 통신을 허용합니다. PipedReader.
PipedReader 클래스의 특징:
- 파이프를 통해 데이터를 읽을 수 있습니다.
- PipedWriter로부터 받은 데이터를 저장하기 위해 버퍼를 사용합니다.
- PipedWriter와 함께 작동하여 스레드 간에 데이터가 안전하게 전송되는지 확인합니다.
- 파이프가 끊어지면 오류가 발생합니다.
Java의 파이프란 무엇입니까?
Java에서는 두 개의 스레드를 연결하는 데 파이프가 사용됩니다. 한 스레드는 파이프를 통해 데이터를 전송하는 데 사용되며 다른 스레드는 데이터를 읽습니다. 데이터를 보내는 스레드가 중지되거나 충돌하면 파이프가 손상된 것으로 간주됩니다.
PipedReader 클래스 선언
PipedReader 클래스의 선언은 다음과 같습니다.
공개 클래스 PipedReader는 Reader를 확장합니다.
구현된 모든 인터페이스:
- 닫을 수 있음: 이 인터페이스는 더 이상 필요하지 않을 때 스트림을 닫고 리소스를 해제하는 데 사용됩니다.
- 자동 닫기 가능: 이 인터페이스를 사용하면 try-with-resources 문에서 자동 리소스 관리가 가능합니다.
- 읽을 수 있음: 이 인터페이스를 사용하면 스트림에서 데이터를 읽을 수 있습니다.
PipedReader의 생성자
이 클래스는 다양한 방법으로 이 클래스의 객체를 생성할 수 있는 4개의 생성자로 구성됩니다. 이 클래스에서 사용할 수 있는 생성자는 다음과 같습니다.
1. 파이프리더(): 이 생성자는 아직 작성자에 연결되지 않은 PipedReader를 생성합니다.
통사론:
공개 PipedReader()
2. PipedReader(int 파이프 크기): 이 생성자는 지정된 파이프 크기로 PipedREader를 생성합니다.
통사론:
공개 PipedReader(int pSize)
3. PipedReader(PipedWriter src): 이 생성자는 PipedWriterStream src에 연결된 PipedReader를 생성합니다.
공개 PipedReader(PipedWriter src)
4. PipedReader(PipedWriter src int 파이프 크기): 이 생성자는 지정된 크기로 연결된 PipedReader를 생성하고 지정된 PipedWriter에 연결됩니다.
통사론:
공개 PipedReader(PipedWriter src int pSize)
Java PipedReaderMethods
아래 이미지는 PipedReader 클래스의 메서드를 보여줍니다.
이제 각 방법에 대해 하나씩 자세히 설명하겠습니다.
1. 읽기(): 이 메서드는 PipedReader에서 다음 문자를 가져오는 데 사용됩니다. 오류가 발생하면 읽을 데이터가 있을 때까지 차단됩니다.
통사론:
public int read()가 IOException을 발생시킵니다.
- 매개변수: 이 메서드는 매개변수를 사용하지 않습니다.
- 반환 유형: 이 메서드는 다음 문자를 정수로 반환하거나 스트림 끝에 도달하면 -1을 반환합니다.
예:
Java // Demonstrating the working // of read() method import java.io.* ; public class GeeKs { public static void main ( String [] args ) throws IOException { PipedReader r = new PipedReader (); PipedWriter w = new PipedWriter (); // Connect the reader and writer r . connect ( w ); // Write data to the PipedWriter w . write ( 71 ); System . out . println ( 'Read: ' + ( char ) r . read ()); w . write ( 69 ); System . out . println ( 'Read: ' + ( char ) r . read ()); w . write ( 75 ); System . out . println ( 'Read: ' + ( char ) r . read ()); } }
산출
Read: G Read: E Read: K
2. read(char[] carray int offset int maxlen): 이 메서드는 PipedReader Stream에서 최대 maxlen 문자를 문자 배열로 읽는 데 사용됩니다. Stream의 끝에 도달하거나 예외가 발생하면 메서드가 차단됩니다.
통사론:
public int read(char[] carray int offset int maxlen)에서 IOException이 발생합니다.
- 매개변수: 이 방법에는 아래 나열된 세 가지 매개변수가 포함됩니다.
- 캐리: 데이터를 읽어올 버퍼입니다.
- 오프셋: 배열의 시작 위치입니다.
- 최대 길이: 배열로 읽어올 최대 문자 수입니다.
- 반환 유형: 이 메소드는 데이터의 maxlen 바이트를 정수 값으로 반환하거나 스트림 끝에 도달하면 -1을 반환합니다.
예:
Java // Demonstrating the working // of read(char[] carray int offset int maxlen) import java.io.* ; public class Geeks { public static void main ( String [] args ) throws IOException { PipedReader r = new PipedReader (); PipedWriter w = new PipedWriter (); r . connect ( w ); // Write data to PipedWriter w . write ( 71 ); // G w . write ( 69 ); // E w . write ( 75 ); // K w . write ( 83 ); // S // Read data into an array char [] b = new char [ 5 ] ; r . read ( b 0 5 ); System . out . print ( 'Read characters: ' ); for ( char c : b ) { System . out . print ( c ); } } }
산출
Read characters: GEKS
3. 닫기(): 이 메서드는 PipedReader를 닫는 데 사용됩니다.
통사론:
public void close()가 IOException을 발생시킵니다.
- 매개변수: 이 메소드는 매개변수를 사용하지 않습니다.
- 반환 유형: 이 메서드는 아무것도 반환하지 않습니다.
예:
Java // Demonstrating the working // of close() method import java.io.* ; public class Geeks { public static void main ( String [] args ) throws IOException { PipedReader r = new PipedReader (); PipedWriter w = new PipedWriter (); r . connect ( w ); w . write ( 71 ); // Close the reader r . close (); System . out . println ( 'Stream closed.' ); } }
산출
Stream closed.
4. 준비(): 이 메서드는 스트림을 읽을 준비가 되었는지 확인하는 데 사용됩니다.
통사론:
공개 부울 Ready()가 IOException을 발생시킵니다.
- 매개변수: 이 메소드는 매개변수를 사용하지 않습니다.
- 반환 유형: 이 메서드는 스트림을 읽을 준비가 되면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
예:
Java // Demonstrating the working // of ready() method import java.io.* ; public class Geeks { public static void main ( String [] args ) throws IOException { PipedReader r = new PipedReader (); PipedWriter w = new PipedWriter (); r . connect ( w ); w . write ( 71 ); // Check if the stream is ready to be read System . out . println ( 'Stream is ready to be read: ' + r . ready ()); } }
산출
Stream is ready to be read: true
5. 닫기(): 이 메서드는 PipedReader 스트림을 닫는 데 사용됩니다.
통사론:
공개 무효 닫기()
- 매개변수: 이 메서드는 매개변수를 사용하지 않습니다.
- 반환 유형: 이 메서드는 아무것도 반환하지 않습니다.
예:
Java // Demonstrating the working // of close() method import java.io.* ; public class Geeks { public static void main ( String [] args ) { try { // Create a PipedReader and PipedWriter PipedReader r = new PipedReader (); PipedWriter w = new PipedWriter (); // Connect the PipedReader to the PipedWriter r . connect ( w ); // Write a character to the PipedWriter w . write ( 'A' ); // Read and print the character from the PipedReader System . out . println ( 'Read: ' + ( char ) r . read ()); // Output: A // Close the PipedReader stream r . close (); System . out . println ( 'Stream closed.' ); } catch ( IOException e ) { e . printStackTrace (); } } }
산출
Read: A Stream closed.퀴즈 만들기