以下代码摘自核心Java卷1的Java Web Start章节。

     ByteArrayOutputStream out = new ByteArrayOutputStream();
     PrintStream printOut = new PrintStream(out);
     printOut.print(panel.getText());
     //panel.getText() return a String
     InputStream data = new ByteArrayInputStream(out.toByteArray());
     FileSaveService service = (FileSaveService) ServiceManager
           .lookup("javax.jnlp.FileSaveService");
     service.saveFileDialog(".", new String[] { "txt" }, data, "calc.txt");

创建了四个对象,流被重定向了三次。
还有其他使用jnlp api将数据写入文件的方法吗?
InputStream和ByteArrayInputStream有什么区别?

最佳答案

ByteArrayInputStreamByteArrayOututStream是内存中的实现,当您希望以类似流的方式将数据临时存储在内存中,然后将其再次泵出其他位置时,可以使用它们。

例如,假设您有一个将输入流作为参数的方法,例如

public Document parseXml(InputStream in) // build an XML document from data read in

但是您想向它发送说一个字符串的内容。然后,您将使用ByteArrayInputStream并用String的内容填充它,并将ByteArrayInputStream传递给该方法。
ByteArrayOutputStream用法的一个示例可能是某个方法写入输出流,但是您只想捕获结果并直接获取它。

09-11 17:34