Java 如何知道二进制文件的字节数?

Java 如何知道二进制文件的字节数?,java,binaryfiles,utf,dataoutputstream,Java,Binaryfiles,Utf,Dataoutputstream,如何在不运行此代码的情况下计算此二进制文件(t.dat)的字节数 (作为一个理论问题)? 假设您在Windows上使用默认ASCII编码运行以下程序 public class Bin { public static void main(String[] args){ DataOutputStream output = new DataOutputStream( new FileOutputStream("t.dat")); output.wr

如何在不运行此代码的情况下计算此二进制文件(t.dat)的字节数 (作为一个理论问题)? 假设您在Windows上使用默认ASCII编码运行以下程序

public class Bin {
     public static void main(String[] args){
     DataOutputStream output = new DataOutputStream(
            new FileOutputStream("t.dat"));
     output.writeInt(12345);
     output.writeUTF("5678");
     output.close();
     }
}

您可以在文件关闭后使用
newfile(“t.dat”).length()
检查文件的长度,而不是试图计算每个写入操作输出的字节数

如果您想在不直接检查长度的情况下计算出来,
int
占用4个字节,而使用
writeUTF
编写的内容占用2个字节来表示字符串的编码长度,再加上字符串本身占用的空间,在本例中是另外4个字节--“5678”中的每个字符都是UTF-8需要1个字节


那就是4+2+4或10字节。

这是一个理论考试题(在纸上)如何在不运行代码的情况下计算它?我修改了上面的答案。请注意,
writeUTF
writeInt
输出的详细信息在javadocs中指定。但是,如果他们希望你能够背诵如此晦涩的细节,那么这(依我看)是一个糟糕的考试题。(根据javadoc writeUTF输出的长度正好是两个字节。但有趣的是,它没有说明一个大于2^16个字符的字符串会发生什么。答案是它确实抛出了
UTFDataFormatException
。),任何使用修改过的UTF的东西都是模糊的(除了JNI否,JNI是模糊的)。这与OOP无关。删除不相关的标签。请确保您用于未来问题的标签是合理的。事实上,这似乎是一个CS问题,甚至不需要代码,而只需要语言、编码和数据类型/数量等信息。