您无法保存到ByteArrayInputStream...永远。AByteArrayInputStream是 anInputStream并且你不能/不能写入 an InputStream。
但是,您可以向 a 写入一些内容ByteArrayOutputStream,获取字节数组,并ByteArrayInputStream为该数组创建一个包装器。
(我假设有一种方法可以将这些实例之一保存到 OutputStream 或 Writer ...)
好吧,我的假设是错误的,WordprocessingMLPackage唯一的save方法保存到File. (我猜有人没有得到关于如何设计灵活的 I/O api 的备忘录......)
但源代码(此处)提供了一些关于如何自己实现它的线索。方法如下:
public void save(java.io.File docxFile) throws Docx4JException {
if (docxFile.getName().endsWith(".xml")) {
// Create a org.docx4j.wml.Package object
FlatOpcXmlCreator worker = new FlatOpcXmlCreator(this);
org.docx4j.xmlPackage.Package pkg = worker.get();
// Now marshall it
JAXBContext jc = Context.jcXmlPackage;
try {
Marshaller marshaller=jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
Boolean.TRUE);
NamespacePrefixMapperUtils.setProperty(marshaller,
NamespacePrefixMapperUtils.getPrefixMapper());
marshaller.marshal(pkg, new FileOutputStream(docxFile));
} catch (Exception e) {
throw new Docx4JException("Error saving Flat OPC XML", e);
}
return;
}
SaveToZipFile saver = new SaveToZipFile(this);
saver.save(docxFile);
}
Run Code Online (Sandbox Code Playgroud)
看起来您应该能够在帮助程序类中复制此代码,并调整它以保存到 aOutputStream而不是(特别是)FileOutputStream. 请注意,该类SaveToZipFile具有save写入OutputStream.
| 归档时间: |
|
| 查看次数: |
5445 次 |
| 最近记录: |