자바 PipedWriter 클래스

자바 PipedWriter 클래스

그만큼 Java의 PipedWriter 클래스 파이프를 통해 데이터를 전달하여 두 스레드가 서로 통신할 수 있도록 합니다. 이 클래스는 프로그램의 한 부분이 데이터를 메모리에 저장하지 않고 다른 부분으로 보내도록 하려는 경우에 유용합니다.

PipedWriter 클래스의 기능:

  • 파이프에 데이터를 쓸 수 있습니다.
  • PipedReader로 데이터를 보내기 전에 버퍼를 사용하여 데이터를 임시로 저장합니다.
  • PipedReader와 함께 작동하여 스레드 간 안전한 데이터 전송을 보장합니다.
  • 파이프가 끊어지면 오류가 발생합니다.

Java에서 PipedWriter 선언

PipedWriter 클래스의 선언은 다음과 같습니다.

공개 클래스 PipedWriter는 Writer를 확장합니다.

구현된 모든 인터페이스:

  • 닫을 수 있음: 이 인터페이스는 리소스를 처리하는 클래스에서 사용됩니다.
  • 플러시 가능: 이 인터페이스는 데이터를 대상으로 플러시하는 데 사용됩니다.
  • 추가 가능: 이 인터페이스는 기존 스트림에 데이터를 추가하는 데 사용됩니다.
  • 자동 닫기 가능: 이 인터페이스를 사용하면 리소스를 자동으로 닫을 수 있습니다.

PipedWriter 클래스의 생성자

이 클래스는 두 개의 생성자로 구성되어 있으며 이를 통해 이 클래스의 객체를 다양한 방법으로 만들 수 있습니다. 이 클래스에서 사용할 수 있는 생성자는 다음과 같습니다.

1. 파이프라이터(): 이 생성자는 아직 아무 것도 연결되지 않은 PipedWriter를 만드는 데 사용됩니다.

통사론:

파이프라이터()

예:

Java
   // Demonstrating the working   // of PipedWriter()   import     java.io.*  ;   class   Geeks     {      public     static     void     main  (  String  []     args  )     {          // Create PipedWriter and PipedReader      PipedWriter     w     =     new     PipedWriter  ();      PipedReader     r     =     new     PipedReader  ();      try     {      // Connect the PipedWriter to the PipedReader      w  .  connect  (  r  );      // Create a thread to write data into the pipe      Thread     writerThread     =     new     Thread  (  new     Runnable  ()     {      public     void     run  ()     {      try     {      w  .  write  (  'Hello from PipedWriter!'  );      w  .  close  ();      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }      });      // Create a thread to read data from the pipe      Thread     readerThread     =     new     Thread  (  new     Runnable  ()     {      public     void     run  ()     {      try     {      int     data  ;      while     ((  data     =     r  .  read  ())     !=     -  1  )     {      System  .  out  .  print  ((  char  )     data  );      }      r  .  close  ();      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }      });      // Start both threads      writerThread  .  start  ();      readerThread  .  start  ();      // Wait for both threads to finish      writerThread  .  join  ();      readerThread  .  join  ();      }     catch     (  IOException     |     InterruptedException     e  )     {      e  .  printStackTrace  ();      }      }   }   

산출
Hello from PipedWriter! 


2. PipedWriter(PipedReader 인스트림): PipedWriter를 생성하고 이를 PipedReader에 연결하는 데 사용된 이 생성자입니다.

통사론:

PipedWriter(PipedReader snk)

예:

Java
   // Demonstrating the working    // PipedWriter(PipedReader snk)   import     java.io.*  ;   public     class   Geeks     {      public     static     void     main  (  String  []     args  )     {      try     {      // Create a PipedReader and a PipedWriter      PipedReader     r     =     new     PipedReader  ();      PipedWriter     w     =     new     PipedWriter  (  r  );         // Create a thread to write data to the PipedWriter      Thread     writerThread     =     new     Thread  (()     ->     {      try     {      w  .  write  (  'Hello PipedWriter'  );      w  .  close  ();         }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      });      // Create a thread to read data from the PipedReader      Thread     readerThread     =     new     Thread  (()     ->     {      try     {      int     data  ;      while     ((  data     =     r  .  read  ())     !=     -  1  )     {      System  .  out  .  print  ((  char  )     data  );         }      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      });      // Start both threads      writerThread  .  start  ();      readerThread  .  start  ();      // Wait for both threads to finish      writerThread  .  join  ();      readerThread  .  join  ();      }     catch     (  IOException     |     InterruptedException     e  )     {      e  .  printStackTrace  ();      }      }   }   

산출
Hello PipedWriter 


Java PipedWriter 메소드

아래 이미지는 PipedWriter 클래스의 메서드를 보여줍니다.

Java의 io.PipedWriter 클래스


이제 각 방법에 대해 하나씩 자세히 설명하겠습니다.

1. 쓰기(int char): 이 메서드는 파이프에 단일 문자를 쓰는 데 사용됩니다.

통사론:

공개 무효 쓰기(int char)

  • 매개변수: 이 메소드는 쓰여질 문자를 나타내는 ischar라는 하나의 매개변수를 사용합니다.
  • 예외: 이 메서드는 I/O 작업에 문제가 있는 경우 IOException을 반환합니다.


2. write(char[] carray int offset int maxlen): 이 메서드는 배열의 문자를 파이프에 쓰는 데 사용됩니다.

통사론:

공공 무효 쓰기(char[] carray int offset int maxlen)

  • 매개변수: 이 방법에는 아래 나열된 세 가지 매개변수가 포함됩니다.
    • 캐리: 데이터를 담고 있는 문자 배열입니다.
    • 오프셋: 양식 작성을 시작할 배열의 위치입니다.
    • 최대 길이: 쓸 수 있는 최대 문자 수입니다.
  • 예외: 이 메서드는 I/O 작업에 문제가 있는 경우 IOException을 반환합니다.


이 메서드는 PipedWriter를 PipedReader에 연결하는 데 사용됩니다.

통사론:

공개 무효 연결(PipedReader 대상)

  • 매개변수: 이 메서드는 PipedWriter가 데이터 전송을 위해 연결할 PipedReader라는 하나의 매개변수 대상을 사용합니다.
  • 예외: 이 메서드는 연결하는 동안 오류가 발생하면 IOException을 발생시킵니다.


4. 플러시(): 이 메서드는 파이프의 데이터를 플러시하는 데 사용됩니다.

통사론:

공공 무효 플러시()

  • 매개변수: 이 메서드는 매개변수를 사용하지 않습니다.
  • 예외: 이 메서드는 데이터를 플러시하는 동안 오류가 발생하면 IOException을 발생시킵니다.


5. 닫기(): 이 메서드는 PipedWriter를 닫는 데 사용됩니다.

구문:

공개 무효 닫기()

  • 매개변수: 이 메서드는 매개변수를 사용하지 않습니다.
  • 예외: 기록기를 닫는 데 문제가 있는 경우 이 메서드는 IOException을 발생시킵니다.


이제 PipedWriter 클래스를 사용하여 데이터를 쓰고 연결된 PipedReader를 통해 읽는 방법에 대해 논의하겠습니다.

예:

Java
   // Demonstrating how to use PipedReader    // and PipedWriter to transferr an array    // of characters between two threads   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  );     // Must connect before use       // Writing a char array       char  []     c     =     {  'J'       'A'       'V'       'A'  };         w  .  write  (  c       0       4  );         // Reading blocks if no data is written yet      System  .  out  .  print  (  'Output from the pipe:'  );         for     (  int     i     =     0  ;     i      <     4  ;     i  ++  )     {         System  .  out  .  print  (  ' '     +     (  char  )     r  .  read  ());         }         w  .  close  ();         r  .  close  ();         }      }   

산출
Output from the pipe: J A V A 



PipedWriter 클래스 메소드의 작동을 보여주는 Java 프로그램

이제 일부 문자를 작성하여 출력을 플러시하고 작성기를 닫습니다.

예:

Java
   // Java program illustrating the working of PipedWriter    // write() connect    // close() flush()   import     java.io.*  ;   public     class   Geeks     {          public     static     void     main  (  String  []     args  )     throws     IOException     {      PipedReader     r     =     new     PipedReader  ();      PipedWriter     w     =     new     PipedWriter  ();      try     {      // Use of connect(): Connecting the writer to the reader      r  .  connect  (  w  );      // Use of write(int byte): Writing characters to the pipe      w  .  write  (  71  );         w  .  write  (  69  );      w  .  write  (  69  );      w  .  write  (  75  );      w  .  write  (  83  );         // Use of flush() method: Flushing the output to       // make sure all data is written      w  .  flush  ();      System  .  out  .  println  (  'Output after flush():'  );      // Reading from the pipe      for     (  int     i     =     0  ;     i      <     5  ;     i  ++  )     {      System  .  out  .  print  (  ' '     +     (  char  )     r  .  read  ());      }      // Use of close() method: Closing the writer      System  .  out  .  println  (  'nClosing the Writer stream'  );      w  .  close  ();      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }   }   

산출
Output after flush(): G E E K S Closing the Writer stream  
퀴즈 만들기