Java 如何知道二进制文件的字节数?
如何在不运行此代码的情况下计算此二进制文件(t.dat)的字节数 (作为一个理论问题)? 假设您在Windows上使用默认ASCII编码运行以下程序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
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问题,甚至不需要代码,而只需要语言、编码和数据类型/数量等信息。