我有大量数据,其中包括西类牙语和英语字符,我正在缓冲这些数据并将其流式传输到文件中。第一次推送效果很好,写入了一个新的 UTF-16BE\w BOM 文件。
当我尝试附加下一组数据时,FileUtils.write() 会调用 String.getBytes("UTF-16"),它会在要附加的字节数组的开头创建另一个 BOM。
有没有办法告诉 FileUtils 检测它是否正在附加并修剪 BOM(如果存在)?
最佳答案
好吧,我想我知道我想做什么了。
private byte[] withoutBOM(final String string, final Charset encoding) throws UnsupportedEncodingException {
byte[] bytes = string.getBytes(encoding);
return Arrays.copyOfRange(bytes, bytes.length % string.length(), bytes.length);
}
这将假设任何编码都是字符串的偶数倍(例如,UTF-16 每个字符有两个字节),并从字节数组的开头修剪掉任何元数据。这样,每当我检测到要附加到文件时,我就可以调用此方法,而无需知道实际编码是什么
关于java - Apache FileUtils 是否有办法在附加到 UTF-16 文件时考虑 BOM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36319336/