Рубрики

Класс Java.io.PipedInputStream в Java

Каналы в IO обеспечивают связь между двумя потоками, работающими в JVM одновременно. Таким образом, трубы используются как в качестве источника или назначения.

  • PipedInputStream также передается через PipedOutputStream. Таким образом, данные могут быть записаны с использованием PipedOutputStream и могут быть записаны с использованием PipedInputStream.But, при одновременном использовании обоих потоков создаст взаимоблокировку для потоков.
  • Канал считается прерванным, если поток, который предоставил байты данных для подключенного конвейерного выходного потока, больше не существует.

Декларация:

public class PipedInputStream
  extends InputStream

Конструктор:

  • PipedInputStream (): создает PipedInputStream, который не подключен.
  • PipedInputStream (int pSize): создает PipedInputStream, который не связан с указанным размером канала.
  • PipedInputStream (PipedOutputStream outStream): создает PipedInputStream, который подключен к PipedOutputStream — 'outStream'.
  • PipedInputStream (PipedOutputStream outStream, int pSize): создает Piped Input Stream, который подключен к Piped Output Stream с указанным размером канала.

Методы:

  • int read (): читает следующий байт данных из этого поточного входного потока. Значение байта возвращается как целое число в диапазоне от 0 до 255. Этот метод блокируется, пока не будут доступны входные данные, не будет обнаружен конец потока, или исключение брошено.

    // Java-программа, иллюстрирующая работу метода read ()

    import java.io.*;

    public class NewClass

    {

        public static void main(String[] args) throws IOException

        {

            PipedInputStream geek_input = new PipedInputStream();

            PipedOutputStream geek_output = new PipedOutputStream();

            try

            {

                // Использование connect (): соединение geek_input с geek_output

                geek_input.connect(geek_output);

      

                // Использование метода read ():

                geek_output.write(71);

                System.out.println("using read() : " + (char)geek_input.read());

                geek_output.write(69);

                System.out.println("using read() : " + (char)geek_input.read());

                geek_output.write(75);

                System.out.println("using read() : " + (char)geek_input.read());

      

            }

            catch (IOException excpt)

            {

                excpt.printStackTrace();

            }

        }

    }

    Выход :

    using read() : G
    using read() : E
    using read() : K
  • read (byte [] buffer, int offset, int maxlen): java.io.PipedInputStream.read (byte [] buffer, int offset, int maxlen) считывает до maxlen байтов данных из Piped Input Stream в массив буферов. Метод блокируется, если достигнут конец потока или выброшено исключение.
    Синтаксис:
    public int read(byte[] buffer, int offset, int maxlen)
    Parameters : 
    buffer : the destination buffer into which the data is to be read
    offset : starting in the destination array - 'buffer'.
    maxlen : maximum length of array to be read
    Return :                                               
    next 'maxlen' bytes of the data as an integer value 
    return -1 is end of stream is reached
    Exception :
    -> IOException : if in case IO error occurs.
    -> NullPointerException : if buffer is null.
    -> IndexOutOfBoundsException : if offset is -ve or 
                                    maxlen is -ve or maxlen > buffer.length - offset.
    
  • receive (int byte): java.io.PipedInputStream.receive (int byte) получает байт данных. Если вход недоступен, метод блокируется.
    Синтаксис:
    protected void receive(int byte)
    Parameters : 
    byte : the bytes of the data received
    Return :                                               
    void
    Exception :
    -> IOException : if in case IO error occurs or pipe is broken.
  • close (): java.io.PipedInputStream.close () закрывает Piped Input Stream и освобождает выделенные ресурсы.
    Синтаксис:
    public void close()
    Parameters : 
    --------------
    Return :                                               
    void
    Exception :
    -> IOException : if in case IO error occurs.
  • connect (источник PipedOutputStream): java.io.PipedInputStream.connect (источник PipedOutputStream) соединяет Потоковый входной поток с исходным Потоковым выходным потоком «источник», а в случае, если «источником» являются каналы с некоторым другим потоком, возникает исключение ввода-вывода
    Синтаксис:
    public void connect(PipedOutputStream source)
    Parameters : 
    source : the Piped Output Stream to be connected to
    Return :                                               
    void
    Exception :
    -> IOException : if in case IO error occurs.
  • available (): java.io.PipedInputStream.available () возвращает нет. байтов, которые могут быть прочитаны из входного потока без фактической блокировки.
    Синтаксис:
    public int available()
    Parameters : 
    -------------
    Return :                                               
    no. of bytes that can be read from Input Stream without actually being blocked.
    0, if the stream is already closed but by invoking close() method
    Exception :
    -> IOException : if in case IO error occurs.
  • Java-программа, объясняющая работу методов класса PipedInputStream:

    // Java-программа, иллюстрирующая работу PipedInputStream
    // connect (), read (byte [] buffer, int offset, int maxlen),
    // close (), available ()

      

    import java.io.*;

    public class NewClass

    {

        public static void main(String[] args) throws IOException

        {

            PipedInputStream geek_input = new PipedInputStream();

            PipedOutputStream geek_output = new PipedOutputStream();

            try

            {

                // Использование connect (): соединение geek_input с geek_output

                geek_input.connect(geek_output);

      

                geek_output.write(71);

                geek_output.write(69);

                geek_output.write(69);

                geek_output.write(75);

                geek_output.write(83);

      

                // Использование available ():

                System.out.println("Use of available() : " + geek_input.available());

      

                // Использование read (byte [] buffer, int offset, int maxlen):

                byte[] buffer = new byte[5];

                // назначение 'буфер'

                geek_input.read(buffer, 0, 5);

      

                String str = new String(buffer);

                System.out.println("Using read(buffer, offset, maxlen) : " + str);

      

                // Использование метода close ():

                System.out.println("Closing the stream");

                geek_input.close();

      

            }

            catch (IOException excpt)

            {

                excpt.printStackTrace();

            }

        }

    }

    Выход:

Use of available() : 5
Using read(buffer, offset, maxlen) : GEEKS
Closing the stream

Следующая статья: Java.io.PipedOutputStream класс в Java

Эта статья предоставлена Мохит Гупта 🙂 . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Класс Java.io.PipedInputStream в Java

0.00 (0%) 0 votes