我有一个小的jMonkey程序,球在周围弹跳。我想每秒记录每个球的三维矢量。
当我运行我的代码时:
@Override
public void simpleUpdate(float tpf) {
if(getTimer().getTimeInSeconds() >= 1) {
out.write("\n" + count + " ");
out.write(ball1g.getLocalTranslation() + " ");
out.write(ball2g.getLocalTranslation() + " ");
out.write(ball3g.getLocalTranslation().toString());
count++;
getTimer().reset();
}
}
我的文字文件完全空白。但是当我跑步时:
@Override
public void simpleUpdate(float tpf) {
out.write("this can be anything bigger than one character wide");
if(getTimer().getTimeInSeconds() >= 1) {
out.write("\n" + count + " ");
out.write(ball1g.getLocalTranslation() + " ");
out.write(ball2g.getLocalTranslation() + " ");
out.write(ball3g.getLocalTranslation().toString());
count++;
getTimer().reset();
}
}
它起作用,只是在我的实际数据之间有大量的字符。
out.write("");
什么都不做,至少必须
out.write(" ");
或更大。
我做错了吗?如果没有,我如何解决这个问题但完成同样的任务呢?
答案 0 :(得分:2)
你的节目有干净的出口吗?如果您的输出是缓冲的,并且您只是偶尔写入它,那么flush可能需要很长时间。如果在刷新之前终止程序,并且它没有正确关闭流,则永远不会刷新缓冲区内容,并且生成的文件将为空。
OTOH如果你总是在写(if
之外的代码可能比内部代码调用更多)缓冲区将更快填充,所以有更好的几率至少有一些数据将是冲洗。
在代码完成编写后(在out.flush()
的末尾)尝试显式调用if
,看看是否能解决问题。