添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

java输出流转输入流

在 Java 中,可以使用 PipedOutputStream 和 PipedInputStream 将输出流转换为输入流。

PipedOutputStream 是一个输出流,它将数据写入到一个管道中。PipedInputStream 是一个输入流,它从相同的管道中读取数据。使用 PipedOutputStream 和 PipedInputStream 的步骤如下:

创建一个 PipedOutputStream 对象和一个 PipedInputStream 对象,并将它们连接在一起。

PipedOutputStream pos = new PipedOutputStream();
PipedInputStream pis = new PipedInputStream(pos);

将数据写入 PipedOutputStream 对象中。

pos.write(data);
pos.close(); // 在写入完所有数据后需要关闭输出流

从 PipedInputStream 对象中读取数据。

int bytesRead = pis.read(buffer);

注意:在使用 PipedInputStream 时,必须先启动一个线程来读取数据,否则会导致程序阻塞。以下是完整的示例代码:

PipedOutputStream pos = new PipedOutputStream();
PipedInputStream pis = new PipedInputStream(pos);
Thread writerThread = new Thread(() -> {
    try {
        pos.write("Hello, World!".getBytes());
        pos.close();
    } catch (IOException e) {
        e.printStackTrace();
Thread readerThread = new Thread(() -> {
    byte[] buffer = new byte[1024];
    try {
        int bytesRead = pis.read(buffer);
        System.out.println(new String(buffer, 0, bytesRead));
        pis.close();
    } catch (IOException e) {
        e.printStackTrace();
writerThread.start();
readerThread.start();

上述代码会输出字符串 "Hello, World!"。其中,writerThread 线程向 PipedOutputStream 对象中写入数据,而 readerThread 线程从 PipedInputStream 对象中读取数据。注意,读取数据的线程必须在写入数据的线程之后启动,否则会导致程序阻塞。

  •