假设有一个UTF-8编码的字节数组(作为字符串Base64解码的结果),请问正确的将其写入UTF-8编码文件的方式是什么?
下面的源代码(逐字节地写入数组)是否正确?
OutputStreamWriter osw = new OutputStreamWriter(
new FileOutputStream(tmpFile), Charset.forName("UTF-8"));
for (byte b: buffer)
osw.write(b);
osw.close();
假设有一个UTF-8编码的字节数组(作为字符串Base64解码的结果),请问正确的将其写入UTF-8编码文件的方式是什么?
下面的源代码(逐字节地写入数组)是否正确?
OutputStreamWriter osw = new OutputStreamWriter(
new FileOutputStream(tmpFile), Charset.forName("UTF-8"));
for (byte b: buffer)
osw.write(b);
osw.close();
Writer
,只需使用OutputStream
。使用try-with-resource的完整解决方案如下:try (FileOutputStream fos = new FileOutputStream(tmpFile)) {
fos.write(buffer);
}
Jon在下面指出:
Files.write(Paths.get(tmpFile), buffer);
Files.write
使其更加简单。 - Jon Skeetbuffer
确实是正确的UTF-8格式,并且它表示了Efficient XML可以处理的内容。 - aioobe
Base64
的代码,但它编码的是什么?你确定它们是字符串吗?它们是 Java 字符串吗?还是从字符串转换而来的字节数组?如果你不知道实际对象是什么,那么将它们打印出来会很困难,因为你甚至不知道它们是字符串。在 Base64 中,你可以编码 任何东西,包括图像和声音。 - RealSkeptic