Tag: outputstream

Java文件下载挂起

我有一个用于下载文件的Web界面。 当请求进入时,我的glassfish服务器从Web服务流式传输文件,然后将内容写入输出流。 我的代码工作正常,除非文件大小变得非常大(如超过200 MB),它挂起显示0%已下载到浏览器中,文件永远不会下载。 当我在while循环中移动flush()方法时,它也适用于大文件。 我不确定在循环中放置flush()是否有问题。 不知道这件事实际上是如何运作的。 我的代码如下: HttpURLConnection conn = (HttpURLConnection) downloadUri.toURL().openConnection(); conn.setDoOutput(true); conn.setRequestMethod(“GET”); conn.setRequestProperty(“Content-Type”, “application/pdf”); if (conn.getResponseCode() == 200) { ServletOutputStream output; try (InputStream inputStream = conn.getInputStream()) { HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); response.setContentType(“application/octet-stream”); response.setHeader(“Content-Length”, conn.getHeaderField(“Content-Length”)); response.setHeader(“Content-Disposition”, “attachment; filename=\”” + abbr + “.pdf\””); output = response.getOutputStream(); byte[] buffer = new byte[1024]; int bytesRead; […]

如何使用outputstream在java中添加附件到电子邮件

我已经看到了javax.mail库的代码,你可以在其中添加附件到电子邮件: MimeBodyPart attachmentPart = new MimeBodyPart(); FileDataSource fds = new FileDataSource(“C:/text.txt”); attachmentPart.setDataHandler(new DataHandler(fds)); attachmentPart.setFileName(“text.txt”); multipart.addBodyPart(attachmentPart); 但这需要该文件驻留在此磁盘上的某个位置。 我想直接从电子邮件库中获取一个输出流,并直接从我写入该输出流的另一个地方将文件内容流入其中。 这可能吗?

如何在同一个servlet请求中使用getOutputStream()和getWriter()?

如何在同一个servlet请求中使用getOutputStream()和getWriter()?

如果未手动关闭流,它何时关闭?

我想知道如果一个流没有手动关闭,它什么时候关闭。 我的意思是,如果它的参考范围不再是,那么流将被关闭吗? 请考虑以下示例场景。 Class A{ InputStream in; OutputStream out; A(){ // Initialize and create the streams. } … } Class B{ public void myMethod(){ A a = new A(); System.out.println(“End of my method.”) } … } 在这里,一旦我完成了流,我将退出myMethod()但程序反过来进程,不会终止并继续其他操作。 我没有关闭溪流。 一旦A类参考范围结束,它会自动关闭吗? (即当myMethod()结束时)? GC会照顾到这个吗? 此外,我读到,一旦进程结束,流将被关闭,系统将释放为其他进程保留的所有资源。 我们如何检查流是否开放? 是否有来自Java的任何linux命令或选项来检查? 任何帮助表示赞赏!

Log4J:如何将OutputStream或Writer重定向到logger的writer?

我有一个方法,它在启动后以异步方式运行,使用OutputStream或Writer作为参数。 它充当OutputStream或Writer的录制适配器( 它是我无法更改的第三方API )。 我怎么能将Log4J的内部OutputStream或Writer传递给该方法? …因为Log4J吞下了System.out和System.err,我之前使用过。

如何检查OutputStream是否已关闭

无论如何都要检查OutputStream是否关闭而不尝试写入并捕获IOException ? 例如,考虑以下设计方法: public boolean isStreamClosed(OutputStream out){ if( /* stream isn’t closed */){ return true; }else{ return false; } } 什么可以替换/* stream isn’t closed */与?

在multithreadingJava程序中,每个线程都有自己的System.out副本吗?

我正在编写一个multithreadingJava程序,其中每个线程可能需要将其标准输出重定向到单独的文件。 每个线程都有自己的文件。 是否可以在“每个线程”的基础上重定向System.out,还是在所有线程中更改为System.out全局?

将InputStream写入HttpServletResponse

我有一个我想要写入HttpServletResponse的InputStream。 有这种方法,由于使用byte []需要太长时间 InputStream is = getInputStream(); int contentLength = getContentLength(); byte[] data = new byte[contentLength]; is.read(data); //response here is the HttpServletResponse object response.setContentLength(contentLength); response.write(data); 在速度和效率方面,我想知道最好的方法是什么。

如何读取pdf文件并将其写入outputStream

我需要读取带有文件路径“C:\ file.pdf”的pdf文件并将其写入outputStream。 最简单的方法是什么? @Controller public class ExportTlocrt { @Autowired private PhoneBookService phoneBookSer; private void setResponseHeaderTlocrtPDF(HttpServletResponse response) { response.setContentType(“application/pdf”); response.setHeader(“content-disposition”, “attachment; filename=Tlocrt.pdf” ); } @RequestMapping(value = “/exportTlocrt.html”, method = RequestMethod.POST) public void exportTlocrt(Model model, HttpServletResponse response, HttpServletRequest request){ setResponseHeaderTlocrtPDF(response); File f = new File(“C:\\Tlocrt.pdf”); try { OutputStream os = response.getOutputStream(); byte[] buf = new byte[8192]; InputStream […]

如何一次将数据写入两个java.io.OutputStream对象?

我正在寻找神奇的Java类,这将允许我做这样的事情: ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); FileOutputStream fileStream = new FileOutputStream(new File(“/tmp/somefile”)); MultiOutputStream outStream = new MultiOutputStream(byteStream, fileStream); outStream.write(“Hello world”.getBytes()); 基本上,我想在Java中使用OutputStream的tee 。 有任何想法吗? 谢谢!