以下のメソッドはファイルサイズを2として返します。長いので、javaが計算するファイルサイズは2*64ビットであると想定しています。しかし実際には、32ビットのint+16ビットのchar=48ビットを節約しました。なぜJavaがこの変換を行うのですか?また、Javaは、charまたはintに関係なく、ファイルにすべてを暗黙的に格納しますか?48ビットの正確なサイズを取得するにはどうすればよいですか?
public static void main(String[] args)
{
File f = new File("C:/sam.txt");
int a= 42;
char c= '.';
try {
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
PrintWriter pw = new PrintWriter(f);
pw.write(a);
pw.write(c);
pw.close();
System.out.println("file size:"+f.length());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}