如何继续循环DataInputStream?

时间:2014-10-08 12:42:18

标签: java while-loop datainputstream

我正在读取二进制文件,我必须解析此文件中的标题。

我设置了DataInputStream,我需要让它继续循环遍历文件直到结束。我是Java的新手,所以不确定如何从我的C#经验中解决这个问题。目前我有以下代码:

while (is.position != is.length) {                              
    if ( card == Staff) {
        System.out.print(card);
    } else if ( card == Student ) {
        System.out.print(card);
    } else if (card == Admin) {
        System.out.print(card);
    } else {
        System.out.print("Incorrect");
    }
}

is是我创建的输入流,我唯一的错误是在第一行中,while循环在位置和长度下开始,表示它们无法解析或不是字段。

1 个答案:

答案 0 :(得分:1)

查看the docsDataInputStream看起来不像是一个位置字段。您可以使用其他方法之一来检查是否有更多可用数据,但是您的代码示例中并不清楚您要执行的操作。

目前,我可以在您的代码中看到许多问题:

  1. 如果cardStaffStudentAdmin的类型为String,那么您需要使用equals(String s)方法对它们进行比较,而不是==引用相等(即。card.equals(Staff)而不是card == Staff
  2. 您似乎没有在循环中迭代。如果你没有做任何事情来改变is.position的值(我知道这实际上并不存在,但假设说......)那么如果你可以进入循环,你将永远不会离开它。
  3. 您不会更改card的值。如果你做了一些固定次数的迭代,你就会反复打印相同的输出,这可能不是你想要的。