【问题标题】:How Smooks handle array of bytesSmooks 如何处理字节数组
【发布时间】:2015-03-02 09:44:09
【问题描述】:

我有一个 Vo 类,其中包含 byte[] 类型的成员。现在我想将这个类的整个对象数据写入一个文件,我使用 smooks API,配置如下:

smookConfig.xml:

<ftl:template><!--<#list objectVo.arrayOfBytes as oneByte> ${oneByte}</#list>--> </ftl:template>

现在在创建对象并填充所有数据并使用 smooks API 将其导出到文件后,当我在二进制阅读器中打开文件时,我可以看到字节已转换为其 ASCI 代码,因此如果字节为 0x00 VO 然后当我打开文件时,我会发现它是 0x30 ,这是字符 0 的 ASCI 代码。 我想知道 smooks 中是否有任何方法可以在不进行任何转换的情况下导出字节数据,以便它与 java OutputStream.write(byte[]) 执行相同的操作,后者无需任何转换即可打印二进制数据。

问候,

【问题讨论】:

    标签: byte freemarker smooks


    【解决方案1】:

    问题是,FreeMarker 是一个 text 模板引擎。它的输出进入Writer,而不是直接进入OutputStream。当然,如果您知道输出字符集是什么,而且它不是 UTF-something 或其他多字节字符集,那么您就可以作弊……对于作弊,您必须编写自定义指令 (TemplateDirectiveModel) 或直接调用一个返回 String 这样的 Java 方法(我不知道 Smooks 是否允许您公开一些普通的 Java 对象)。

    【讨论】:

    • 感谢 ddekany 的回复。实际上我试图输出的数据字节属于 jpg 图像数据字节。并且数据的接收者想要它在 Binary 中,甚至在 Base64 中也不想要它。所以我想 smooks API 在这种情况下对我没有用。谢谢。
    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多