java - 保存最小文件大小的数据 - 作为字节对象而不是文本?

时间:2017-09-02 14:44:31

标签: java

我的java代码生成并将大量数据记录到文件中,因为它以10-60fps运行长达数天。每个时间点都有以下条目

时间戳(长),x坐标(int - 0-2000),y坐标(int - 0-1000),灰度像素值(字节),方向(短),长度(短),宽度(短),其他值(int)

毫不奇怪,我正在尝试最小化记录数据的文件大小,并希望能够选择最佳策略来实现这一目标。我已经探索了两种基本方法......编写ascii或保存二进制对象

OBJ:

FileOutputStream fos = new FileOutputStream(new File(filePathString));
ObjectOutputStream fw_obj = new ObjectOutputStream(fos);
fw_obj.writeObject(aString);

TXT:

FileOutputStream fos = new FileOutputStream(new File(filePathString));
Writer fw_txt = new BufferedWriter(new OutputStreamWriter(fos));
fw_txt.write(aString);

对象方法的效果不如我所希望的那么有效。文件大小大致相等。关于什么策略应该是最好的任何建议和推动这个最大化的意见将非常感激。永远感激,

1 个答案:

答案 0 :(得分:0)

在我看来,最好的策略是将值转换为字节,然后将它们写入文件

Long + int + int + byte + short + short + short + int

8 + 4 + 4 + 1 + 2 + 2 + 2 + 4 =每个数据27个字节