我了解此方法由接口writeChars
中的DataOutput
指定,并且Javadoc声明:
将字符串s中的每个字符依次写入每个字符两个字节
我无法理解,而且我一直在研究SO上的许多其他编码问题,就是如果writeChars
显式地每个字符写入2个字节,并且不区分任何字符(因此我认为那就不再是Java运行时使用什么编码的问题了,但是任何文件系统都将一个字符视为2个字节),然后为什么将SPACE
字符视为一个字节?
我可能缺少了一个非常简单的东西,这里有许多关于编码的问题很有用,但是我似乎无法将这些问题应用于我的问题。
Edit *我本来要提供代码,但是在运行一个测试一组输入(而不是整个输入文件)并基于标记的答案后,现在我得到了预期的输出,显然我错了。
答案 0 :(得分:2)
我无法复制您描述的行为。
public class Test {
public static void main(String[] args) throws Exception {
try (RandomAccessFile raf = new RandomAccessFile("test", "rw")) {
raf.writeChars("\u0020");
}
}
}
这将在当前目录中创建一个名为“ test”的文件,其中“ ls -l”告诉我两个字节长。