从ServerRequest中提取InputStream

问题描述

我一直想从System.out.println(012): (2 * 8 ^ 0) + (1 * 8 ^ 1) = 10 12 = 2*8^0 + 1*8^1 ---> 10 System.out.println(0123) (3 * 8 ^ 0) + (2 * 8 ^ 1) + (1 * 8 ^ 2) = 83 123 = 3*8^0 + 2*8^1 + 1*8^2 ---> 83 正文中提取inputStream,但无济于事。到目前为止,我已经尝试了一些在这里和其他地方找到的方法,并最终又遇到了相同的问题,即->

给出以下摘录:

enter image description here

我通过检查得到了这个inputStream,这显然是不正确的:

enter image description here

enter image description here

在我看来,是否可以使用reactive.function.server.ServerRequest或其他任何对象来实现这种转换?

解决方法

DataBuffer本身可以完成这项工作。它具有asInputStream方法。

但是,您可能会问错一个问题:

几乎所有的InputStreams,当然还有来自网络连接的输入流,从根本上讲都是一个阻塞的概念,而您正在使用反应式,这意味着如果您阻塞,您的代码将被破坏。

换句话说,根据一般经验,“我使用反应式!”和“我想要输入流!”是互斥的。您..不需要输入流。

如果必须,您需要一点奇特的独角兽:一个InputStream,保证它不会阻塞。实际上,只有一种方法可以创建这样的野兽,那就是将ALLLLL数据泵入内存(希望它不是特别大量的数据!),然后生成一个仅提供已经加载到内存中的字节的inputstream:流不会阻塞。 ByteArrayInputStream是此类流的一个示例。大概是DataBuffer的asInputStream方法。