gpt4 book ai didi

Java字节数组和DataOutputStream处理

转载 作者:行者123 更新时间:2023-12-04 05:58:40 24 4
gpt4 key购买 nike

我们正在处理一个 byte[] 如下所示(文件被 POST 到一个 web 服务器,这段代码在 Glassfish 中运行)并且发现一些文件有一个字节顺序标记(BOM,一个三字节序列 0xEF ,0xBB,0xBF,见: http://en.wikipedia.org/wiki/Byte_order_mark ) 开头,我们想删除这个 BOM。我们将如何检测和删除此代码中的 BOM?谢谢。

  private final void serializePayloadToFile(File file, byte[] payload) throws IOException {

FileOutputStream fos;
DataOutputStream dos;

fos = new FileOutputStream(file, true); // true for append
dos = new DataOutputStream(fos);

dos.write(payload);
dos.flush();
dos.close();
fos.close();

return;
}

最佳答案

How would we detect [...]



显然无法确定这三个字节是三个随机字节还是代表 BOM 的三个字节。

您可以检查数组是否以 0xEF、0xBB、0xBF 开头,在这种情况下跳过它们。

[...] and remove a BOM in this code?



这样的事情应该做:
int off = payload.length >= 3
&& payload[0] == 0xEF
&& payload[1] == 0xBB
&& payload[2] == 0xBF ? 3 : 0

dos.write(payload, off, payload.length - off);

关于Java字节数组和DataOutputStream处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9197263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com