我有一个类,一方面,感觉从公共(public)方法返回InputStream是正确的,例如publicclassMyClass{privateFile_file;...publicInputStreamgetInputStream(){returnnewFileInputStream(_file);}}但是,我对这样做也非常谨慎,因为它让调用者有责任关闭此流。我可以通过哪些方式避免此问题? 最佳答案 取决于为什么这是你眼中的问题。如果您绝对必须返回一个InputStream并且所讨论的文件不是太大,您可以将整个文件缓冲到字节数组中,
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭6年前。Improvethisquestion我想知道如何对InputStream进行深拷贝。我知道可以使用IOUtils包来完成,但我想尽可能避免使用它们。有人知道替代方法吗?
要将数据发送到我的FTP服务器上的文件,我需要创建一个自定义InputStream实现,它逐行读取数据库数据,将其转换为CSV并通过其read()方法发布:从数据库中,我得到一个List带有数据的对象。对于每个Application对象,我想在CSV文件中创建一行。我的想法是在构造函数中加载所有数据,然后覆盖读取方法。我需要覆盖所有InputStream的方法吗?我尝试用谷歌搜索一些示例,但没有成功-您最终能给我一个链接吗? 最佳答案 你只需要执行theread()methodwithoutparameters.所有其他方法都作为对
我有一个无穷无尽的InputStream和一些数据,我想返回这些数据以响应GETHTTP请求。我希望我的网络/API客户端无休止地从中读取。我如何使用JAX-RS做到这一点?我正在尝试这个:@GET@Path("/stream")@Produces(MediaType.TEXT_PLAIN)publicStreamingOutputstream(){finalInputStreaminput=//getitreturnnewStreamingOutput(){@Overridepublicvoidwrite(OutputStreamout)throwsIOException{while
我需要生成N个消费者线程,它们同时处理相同的InputStream,例如-以某种方式对其进行转换,计算校验和或数字签名等。这些消费者彼此不依赖,并且都在使用第三方库,这接受InputStream作为数据源。所以我能做的是-创建一些InputStream的实现,这将从“父”流中读取数据block解锁消费者等到每个消费者都读完整个block阅读下一段虽然看起来很简单,但当某些消费者死亡时,可能会引发各种问题,例如活锁,实现所有InputStream方法,使用屏障/锁存器控制消费者自己的fork/join等。一个friend告诉我,实现需要半个小时,这让我度过了一个晚上。我宁愿使用足够成熟的
以下代码摘自java核心卷一的javawebstart章节ByteArrayOutputStreamout=newByteArrayOutputStream();PrintStreamprintOut=newPrintStream(out);printOut.print(panel.getText());//panel.getText()returnaStringInputStreamdata=newByteArrayInputStream(out.toByteArray());FileSaveServiceservice=(FileSaveService)ServiceManager
在我的Windows7上,Files.newInputStream返回sun.nio.ch.ChannelInputStream。当我测试它与FileInputStream的性能时,我惊讶地发现FileInputStream更快。这个测试InputStreamin=newFileInputStream("test");longt0=System.currentTimeMillis();byte[]a=newbyte[16*1024];for(intn;(n=in.read(a))!=-1;){}System.out.println(System.currentTimeMillis()-
我需要将InputStream的内容转换为字符串。这里的难点在于输入编码,即Latin-1。我使用String、getBytes、char[]等尝试了几种方法和代码片段,以便直接进行编码,但似乎没有任何效果。最后,我想出了下面的工作解决方案。然而,这段代码对我来说似乎有点冗长,即使对于Java也是如此。所以这里的问题是:是否有更简单、更优雅的方法来实现这里所做的事情?privateStringconvertStreamToStringLatin1(java.io.InputStreamis)throwsIOException{Stringtext="";//setupreaderswi
如何将javax.xml.transform.Source转换为InputStream?Source的实现是javax.xml.transform.dom.DOMSource。SourceinputSource=messageContext.getRequest().getPayloadSource(); 最佳答案 首先尝试向下转换为javax.xml.transform.stream.StreamSource。如果成功,您就可以通过getter访问底层的InputStream或Reader。这是最简单的方法。如果向下转型失败,您可
基本上,我有一个URL,可以在发布新消息时从聊天室流式传输xml更新。我想将该URL转换为InputStream并继续从中读取,只要保持连接并且只要我没有发送Thread.interrupt()。我遇到的问题是,当有内容要从流中读取时,BufferedReader.ready()似乎没有变为真。我正在使用以下代码:BufferedReaderbuf=newBufferedReader(newInputStreamReader(ins));Stringstr="";while(Thread.interrupted()!=true){connected=true;debug("Listen