标签: outputstream

使用标准Java库获取Writer的InputStream

我有一个将数据写入 OutputStream 但需要将 OutputStream 的内容作为 InputStream 返回的方法

public InputStream getInputStreamOfData(type param) {
    // ..... data 
    OutputStreamWriter writer = new OutputStreamWriter();
    writer.write(data);
    // convert writer object to an InputStream 
}
Run Code Online (Sandbox Code Playgroud)

我遇到了一些库来执行此操作,例如 IOUtils 和其他基于线程的方法。有没有一种简单的方法可以使用标准 Java 库来实现这一点?我想将编写器中的内容作为 InputStream 返回以供调用方法使用。

谢谢!

java inputstream outputstream stream

3
推荐指数
1
解决办法
9736
查看次数

System.Net.ProtocolViolationException:要写入流的字节超出指定的 Content-Length 字节大小

我基于HttpListener编写Web服务器代码,但经常出现这样的异常

“System.Net.ProtocolViolationException:要写入流的字节超出指定的 Content-Length 字节大小”。

示例代码:

context.Response.Output = System.Text.Encoding.UTF8.GetBytes("xxx");
if (context.Response.Output != null && context.Response.Output.Length > 0)
{
    context.Response.ContentLength64 = context.Response.Output.Length;
    using (var stream = context.Response.OutputStream)
    {
        stream.Write(context.Response.Output, 0, context.Response.Output.Length);
    }
}
Run Code Online (Sandbox Code Playgroud)

并非每次请求都会出现此异常。谁能告诉我怎么解决。谢谢!

c# outputstream httplistener

3
推荐指数
1
解决办法
3492
查看次数

可以非常频繁地在 ObjectOutputStream 上调用 reset() 吗?

我在某个地方读到了让我不确定并寻找替代方法的地方。呼叫reset()过于频繁是否会导致网络紧张,或者对此没有必要?

我正在通过 ObjectOutputStream 使用 TCP 发送一个对象。对象值在再次写入之前已更改。现在是同一个对象但包含不同的值,没有reset()它重新发送之前发送的缓存对象的引用,该引用被读取为没有更改。reset()由于这种压力,我不确定使用是否是一个好主意。我应该寻找另一种方式吗?

示例代码如下:

Socket socket = new Socket(ip, port);

BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
ObjectOutputStream oos = new ObjectOutputStream(bos);

while(true){
    oos.writeObject(object);
    oos.flush();
    oos.reset();

    object.x++;
}
Run Code Online (Sandbox Code Playgroud)

java tcp outputstream reset

3
推荐指数
1
解决办法
2914
查看次数

Clojure - Java 互操作:传递一个 OutputStream 参数并返回一个 String

我正在使用一个 java 库并想调用一个导出数据的方法。

此方法有两种变体:一种具有用作目标文件名的 String 参数,另一种接受 OutputStream 对象并使用 OutputStreamWriter 写入该对象。

我想使用第二种方法并且能够将 OutputStream 返回到一个字符串中,这样我就可以用它做任何我想做的事情。

我不确定它实际上是否可行,但是当我发现 clojure.core/with-out-str 我有一些希望它是可能的,但是我不确定如何使用它。

是否可以将 OutputStream 参数从 Clojure 传递给 Java 方法并将写入的数据作为字符串取回?

谢谢。

编辑:

实际上,类构造函数接受一个 OutputStream 参数,一个方法通过它写入并关闭它。希望这可以帮助。

java outputstream clojure clojure-java-interop

3
推荐指数
1
解决办法
1608
查看次数

JUnit 断言两个字符串是否相等

所以我查了这个问题并尝试过,但没有成功。

我的代码应该测试该方法是否通过使用Streams.

    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    PrintStream myStream = new PrintStream(outStream);
    System.setOut(myStream);
    o.doSomething(); //printing out Hi
    System.out.flush();
    System.setOut(savedOldStream);//setting it back to System.out
    assertEquals(outStream.toString(),"Hi");
Run Code Online (Sandbox Code Playgroud)

但是每次我运行 JUnit 时它都会失败。我也试过:assertTrue(outStream.toString().equals("Hi"));但这也不起作用。

这是 doSomething() 方法:

public void doSomething () {
    System.out.println("Hi");
}
Run Code Online (Sandbox Code Playgroud)

java junit outputstream

3
推荐指数
1
解决办法
1万
查看次数

从输出流写入到输出流

我有一个输出流,客户端 A 正在写入,我需要将它以字节块的形式转发到客户端 B。

我想将客户端 A 的输出流与客户端 B 的输出流连接起来。这可能吗?有什么方法可以做到这一点?我不需要分叉/克隆我而是需要从流 A 中获取一些数据并将其移动到流 B(即数据不留在流 A 中)

注意:A 和 B 是进程,客户端 A 的输出流不能直接提供给客户端 B。 约束:内存有限

java outputstream

3
推荐指数
1
解决办法
2666
查看次数

将 StreamingOutput 转换为字符串

我正在尝试将 StreamingOutput 转换为 Java 中的字符串以将其传递给另一种方法。它生成字符串,但稍后会引发以下错误。

JAXRSUtils logMessageHandlerProblem 严重:写入数据有问题,ContentType:text/plain

发生了什么?

StreamingOutput stream = method1();
ByteArrayOutputStream output = new ByteArrayOutputStream();
stream.write(output);
String string = new String(output.toString("UTF-8"));


...
public StreamingOutput method1(...){..}
Run Code Online (Sandbox Code Playgroud)

`

java string outputstream

3
推荐指数
1
解决办法
6029
查看次数

尝试以 pdf 形式查看数据,pdf 为空白

我试图在下一个选项卡中打开 pdf 文件,它打开但始终为空白。我正在从 springboot 中的文件夹中调用 pdf 文件。数据确实显示在控制台日志中。

弹簧代码:

 @RequestMapping(value = "/report", method = RequestMethod.GET)
    void getFile(HttpServletResponse response) throws IOException {

        String fileName = "test123.pdf";
        String path = "TrainingDocuments/SuperPartnerUser/" + fileName;

        File file = new File(path);
        FileInputStream inputStream = new FileInputStream(file);

        response.setContentType("application/pdf");
        response.setContentLength((int) file.length());
        response.setHeader("Content-Disposition", "inline;filename=\"" + fileName + "\"");

        FileCopyUtils.copy(inputStream, response.getOutputStream());

    }
Run Code Online (Sandbox Code Playgroud)

反应代码:

function download(filename, text) {
        var element = document.createElement('a');
        element.setAttribute('href', 'data:application/pdf;charset=utf-8,' + encodeURIComponent(text));
         element.setAttribute('target','_blank');
       
        element.style.display = 'none';
        document.body.appendChild(element);
       
        element.click();
       
        document.body.removeChild(element);
        }

    function test () {
        Api(`tempFileDownload/report`, 'Get',"",3).then((data) => …
Run Code Online (Sandbox Code Playgroud)

pdf inputstream outputstream reactjs spring-boot

3
推荐指数
1
解决办法
3208
查看次数

为什么 Java 11 在 ByteArrayOutputStream 类中添加了 writeBytes?(byte[] b) 方法,而 write?(byte[] b) 方法却做了同样的事情?

Oracle从 Java 11 开始writeBytes\xe2\x80\x8b(byte[] b)向该类添加了方法。ByteArrayOutputStream该方法采用字节数组并将其写入ByteArrayOutputStream. 然而,ByteArrayOutputStream扩展OutputStream类定义了write\xe2\x80\x8b(byte[] b)做同样的事情。为什么 Java 需要一个新方法来做到这一点?

\n

java outputstream bytearrayoutputstream

3
推荐指数
1
解决办法
620
查看次数

2
推荐指数
1
解决办法
1万
查看次数