Java 二进制文件的大小与将字符串写入文件的大小相同

Java 二进制文件的大小与将字符串写入文件的大小相同,java,file-io,Java,File Io,我想做一个哈夫曼编码系统。我在试图保存编码文本时遇到了一个问题-它比原始大小大。 我认为问题在于0和1的字符串被写为字符串,而不是二进制文件 byte[] bytes = s.getBytes(); try { FileOutputStream fout = new FileOutputStream(newFileName); DataOutputStream dout = new DataOutputStream(fout); dout.write(bytes

我想做一个哈夫曼编码系统。我在试图保存编码文本时遇到了一个问题-它比原始大小大。 我认为问题在于0和1的字符串被写为字符串,而不是二进制文件

byte[] bytes = s.getBytes();
try {
    
    FileOutputStream fout = new FileOutputStream(newFileName);
    DataOutputStream dout = new DataOutputStream(fout);
    dout.write(bytes);
    dout.close();
    System.out.println("File encoded");
}
catch (IOException e) {
    e.printStackTrace();
}

输出文件的大小与我用手写记事本写0和1时的大小相同。由于我正在转换为字节,输出文件不应该更小吗?

No,
getBytes
返回每个字符的字节值,所以0x30='0',0x31='1',0x32='2',依此类推。