以下代码摘自核心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有什么区别?
最佳答案
ByteArrayInputStream
和ByteArrayOututStream
是内存中的实现,当您希望以类似流的方式将数据临时存储在内存中,然后将其再次泵出其他位置时,可以使用它们。
例如,假设您有一个将输入流作为参数的方法,例如
public Document parseXml(InputStream in) // build an XML document from data read in
但是您想向它发送说一个字符串的内容。然后,您将使用
ByteArrayInputStream
并用String的内容填充它,并将ByteArrayInputStream
传递给该方法。ByteArrayOutputStream
用法的一个示例可能是某个方法写入输出流,但是您只想捕获结果并直接获取它。