相关疑难解决方法(0)

如何克隆InputStream?

我有一个InputStream,我传递给一个方法来做一些处理.我将在其他方法中使用相同的InputStream,但在第一次处理之后,InputStream似乎在方法内部关闭.

我如何克隆InputStream发送到关闭他的方法?有另一种解决方案吗?

编辑:关闭InputStream的方法是来自lib的外部方法.我无法控制关闭与否.

private String getContent(HttpURLConnection con) {
    InputStream content = null;
    String charset = "";
    try {
        content = con.getInputStream();
        CloseShieldInputStream csContent = new CloseShieldInputStream(content);
        charset = getCharset(csContent);            
        return  IOUtils.toString(content,charset);
    } catch (Exception e) {
        System.out.println("Error downloading page: " + e);
        return null;
    }
}

private String getCharset(InputStream content) {
    try {
        Source parser = new Source(content);
        return parser.getEncoding();
    } catch (Exception e) {
        System.out.println("Error determining charset: " + e);
        return "UTF-8";
    }
}
Run Code Online (Sandbox Code Playgroud)

java clone inputstream

152
推荐指数
6
解决办法
12万
查看次数

如何将OutputStream传递给StreamingDataHandler?

我在JAX-WS中有一个Java Web服务,它从另一个方法返回一个OutputStream.我似乎无法弄清楚如何将OutputStream流式传输到返回的DataHandler,而不是创建一个临时文件,写入它,然后再将它作为InputStream重新打开.这是一个例子:

@MTOM
@WebService
class Example {
    @WebMethod
    public @XmlMimeType("application/octet-stream") DataHandler service() {
        // Create a temporary file to write to
        File fTemp = File.createTempFile("my", "tmp");
        OutputStream out = new FileOutputStream(fTemp);

        // Method takes an output stream and writes to it
        writeToOut(out);
        out.close();

        // Create a data source and data handler based on that temporary file
        DataSource ds = new FileDataSource(fTemp);
        DataHandler dh = new DataHandler(ds);
        return dh;
    }
}
Run Code Online (Sandbox Code Playgroud)

主要问题是writeToOut()方法可以返回远大于计算机内存的数据.这就是为什么该方法首先使用MTOM - 流式传输数据.我似乎无法解决如何直接从OutputStream流式传输数据,我需要提供给返回的DataHandler(最终是接收StreamingDataHandler的客户端).

我已经尝试过使用PipedInputStream和PipedOutputStream,但这些似乎并不是我需要的,因为在写入PipedOutputStream之后需要返回DataHandler.

有任何想法吗?

java jax-ws stream

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

将文本文件转换为 DataHandler

我有一个文本文件,需要作为 SOAP 请求的一部分通过 Web 服务发送。

有人可以分享将此文本文件放入数据处理程序(在java中)的代码吗?我知道它可能涉及不确定确切代码的流。

java web-services

4
推荐指数
1
解决办法
6755
查看次数

标签 统计

java ×3

clone ×1

inputstream ×1

jax-ws ×1

stream ×1

web-services ×1