Java jMonkey bug,out.write里面的if循环

时间:2012-11-08 21:36:10

标签: java jmonkeyengine

我有一个小的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(" ");

或更大。

我做错了吗?如果没有,我如何解决这个问题但完成同样的任务呢?

1 个答案:

答案 0 :(得分:2)

你的节目有干净的出口吗?如果您的输出是缓冲的,并且您只是偶尔写入它,那么flush可能需要很长时间。如果在刷新之前终止程序,并且它没有正确关闭流,则永远不会刷新缓冲区内容,并且生成的文件将为空。

OTOH如果你总是在写(if之外的代码可能比内部代码调用更多)缓冲区将更快填充,所以有更好的几率至少有一些数据将是冲洗。

在代码完成编写后(在out.flush()的末尾)尝试显式调用if,看看是否能解决问题。