Java'da PipedWriter sınıfı iki iş parçacığının verileri bir borudan geçirerek birbirleriyle iletişim kurmasını sağlar. Bu sınıf, programın bir bölümünün hafızada saklanmadan başka bir bölüme veri göndermesini istediğimizde kullanışlıdır.
PipedWriter Sınıfının Özellikleri:
- Bir boruya veri yazmayı sağlar.
- Verileri PipedReader'a göndermeden önce geçici olarak depolamak için bir arabellek kullanır.
- İş parçacıkları arasında güvenli veri aktarımını sağlamak için PipedReader ile birlikte çalışır.
- Boru kırılırsa hata verir.
Java'da PipedWriter Bildirgesi
PipedWriter sınıfının bildirimi şöyledir:
genel sınıf PipedWriter, Writer'ı genişletiyor
Uygulanan Tüm Arayüzler:
- Kapatılabilir: Bu arayüz kaynakları işleyen sınıflar tarafından kullanılır.
- Yıkanabilir: Bu arayüz, verileri hedefine ulaştırmak için kullanılır.
- Eklenebilir: Bu arayüz mevcut bir akışa veri eklemek için kullanılır.
- Otomatik Kapatılabilir: Bu arayüz kaynakların otomatik olarak kapatılmasına olanak sağlar.
PipedWriter Sınıfındaki Yapıcılar
Bu sınıf, yardımıyla bu sınıfın nesnelerini farklı şekillerde oluşturabileceğimiz iki kurucudan oluşur. Bu sınıfta mevcut olan yapıcılar şunlardır:
1. PipedWriter(): Bu yapıcı henüz hiçbir şeye bağlı olmayan bir PipedWriter oluşturmak için kullanılır.
Sözdizimi:
PipedWriter()
java ayy kavramları
Örnek:
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(); } } }
Çıkış
Hello from PipedWriter!
2. PipedWriter(PipedReader inStream): Bu yapıcı, bir PipedWriter oluşturmak ve onu bir PipedReader'a bağlamak için kullandık.
Sözdizimi:
PipedWriter(PipedReader snk)
Örnek:
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(); } } }
Çıkış
Hello PipedWriter
Java PipedWriter Yöntemleri
Aşağıdaki resimde PipedWriter sınıfının yöntemleri gösterilmektedir.
java'da hashset nedir

Şimdi her yöntemi tek tek ayrıntılı olarak tartışacağız:
1. yaz(int karakter): Bu yöntem bir boruya tek bir karakter yazmak için kullanılır.
Sözdizimi:
genel geçersiz yazma (int char)
- Parametre: Bu yöntem yazılacak karakteri temsil eden ischar parametresini alır.
- İstisna: Bu yöntem, G/Ç işleminde bir sorun varsa IOException değerini döndürür.
asit özellikleri
2. write(char[] carray int offset int maxlen): Bu yöntem bir diziden boruya karakter yazmak için kullanılır.
Sözdizimi:
public void write(char[] carray int ofset int maxlen)
- Parametre: Bu yöntem aşağıda listelenen üç parametreyi içerir:
- : Verileri içeren karakter dizisidir
- telafi etmek: Dizide form yazmaya başlayacağınız konumdur
- maksimum: Yazılacak maksimum karakter sayısıdır.
- İstisna: Bu yöntem, G/Ç işleminde bir sorun varsa IOException değerini döndürür.
3. bağlanın (PipedReader hedefi): Bu yöntem, PipedWriter'ı bir PipedReader'a bağlamak için kullanılır.
Sözdizimi:
genel geçersiz bağlantı (PipedReader hedefi)
- Parametre: Bu yöntem bir parametre hedefini alır; bu, PipedWriter'ın veri aktarımı için bağlanacağı PipedReader'dır.
- İstisna: Bu yöntem, bağlanırken bir hata oluşursa IOException oluşturur.
4. yıkama(): Bu yöntem, kanaldaki verileri temizlemek için kullanılır.
Sözdizimi:
genel geçersiz yıkama ()
- Parametre: Bu yöntem herhangi bir parametre almaz.
- İstisna: Bu yöntem, veriler temizlenirken bir hata oluşursa IOException oluşturur.
Java'da ayrı dize
5. kapat(): Bu yöntem PipedWriter'ı kapatmak için kullanılır.
Sözdizimi:
genel geçersiz kapatma ()
- Parametre: Bu yöntem herhangi bir parametre almaz.
- İstisna: Yazıcının kapatılmasıyla ilgili bir sorun varsa bu yöntem IOException'ı oluşturur.
Şimdi veri yazmak için PipedWriter sınıfını nasıl kullanabileceğimizi ve verileri bağlı bir PipedReader aracılığıyla okuyacağımızı tartışacağız.
Örnek:
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(); } }
Çıkış
Output from the pipe: J A V A
PipedWriter Sınıfı Yöntemlerinin Çalışmasını Gösteren Java Programı
Şimdi çıktıyı temizleyen bazı karakterler yazacağız ve yazıcıyı kapatacağız.
Örnek:
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(); } } }
Çıkış
Output after flush(): G E E K S Closing the Writer streamTest Oluştur