import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;
import ohos.hiviewdfx.HiLogConst;
import java.io.IOException;
import java.io.PipedOutputStream;
import java.io.PipedInputStream;
public class PipedOutputStreamExample {
private static final HiLogLabel LABEL = new HiLogLabel(HiLogConst.DEBUG, 0x00201, "PipedOutputStreamExample");
public static void main(String[] args) {
try {
// 创建PipedOutputStream和PipedInputStream
PipedOutputStream pipedOutputStream = new PipedOutputStream();
PipedInputStream pipedInputStream = new PipedInputStream();
// 将输入流和输出流关联起来
pipedOutputStream.connect(pipedInputStream);
// 创建一个线程,用于写入数据到输出流
Thread writerThread = new Thread(() -> {
try {
// 向输出流写入数据
String dataToWrite = "Hello, HarmonyOS!";
pipedOutputStream.write(dataToWrite.getBytes());
pipedOutputStream.close(); // 关闭输出流
} catch (IOException e) {
HiLog.error(LABEL, "写入数据时发生错误:{}", e.getMessage());
}
});
// 启动线程
writerThread.start();
// 从输入流读取数据
byte[] buffer = new byte[1024];
int bytesRead = pipedInputStream.read(buffer);
String dataRead = new String(buffer, 0, bytesRead);
HiLog.info(LABEL, "从管道中读取到的数据:{}", dataRead);
// 等待线程结束
writerThread.join();
} catch (IOException | InterruptedException e) {
HiLog.error(LABEL, "发生错误:{}", e.getMessage());
}
}
}
在这个例子中,创建了一个PipedOutputStream和一个PipedInputStream,并通过connect()方法将它们关联起来。然后,创建了一个线程,该线程负责向PipedOutputStream写入数据。主线程从关联的PipedInputStream中读取数据。请注意,PipedOutputStream的write方法和close方法可能会抛出IOException,因此在实际应用中需要适当处理异常。
转载请注明出处:http://www.zyzy.cn/article/detail/3051/鸿蒙OS