我调查了java I / O.现在我正在读管道。
我编写了最简单的代码示例:
PipedInputStream pipedInputStream = new PipedInputStream();
PipedOutputStream pipedOutputStream = new PipedOutputStream();
pipedOutputStream.connect(pipedInputStream);
pipedOutputStream.write(new byte[]{1});
System.out.println(pipedInputStream.read());
我有以下问题。据我了解 - 在现实生活中传递字节是非常奇怪的。
是否真的要扩展此示例以传递整个String,例如?
答案 0 :(得分:5)
是。使用ObjectInputStream和ObjectOutputStream对其进行解贴。
PipedOutputStream pipedOutputStream = new PipedOutputStream();
PipedInputStream pipedInputStream = new PipedInputStream();
pipedInputStream.connect(pipedOutputStream);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(pipedOutputStream);
ObjectInputStream objectInputStream = new ObjectInputStream(pipedInputStream);
objectOutputStream.writeObject("Hello world!");
String message = (String)objectInputStream.readObject();
System.out.println(message);
有关装饰模式的更多信息,特别是Java I / O流装饰,您可以在此StackOverFlow Post找到
BTW,确保在ObjectInputStream之前启动ObjectOutputStream,并在创建Object输入/输出流之前使用connect方法连接管道。
原因如下:http://frequal.com/java/OpenObjectOutputStreamFirst.html