行尾未读取-流标记Java

  • 本文关键字:Java 读取 java stream
  • 更新时间 :
  • 英文 :


我的程序使用Stream Tokenizer从文件中读取并打印内容。检查是否已到达文件末尾的if条件不起作用。

public static void main(String[] args)throws Exception {
  FileReader fr = new FileReader("sample.txt");
    StreamTokenizer st = new StreamTokenizer(fr);
    System.out.printf("%26s","Student Marksheet");
    System.out.println(); 
     do{
         tokenType=st.nextToken();
     if(tokenType==StreamTokenizer.TT_WORD) System.out.print(st.sval+"      ");
      if(tokenType==StreamTokenizer.TT_NUMBER) System.out.print(st.nval+"      ");
      if(tokenType==StreamTokenizer.TT_EOL) System.out.println(); //this line is the problem
     } while(tokenType!=StreamTokenizer.TT_EOF); 
}

这是的文本文件


名称eng物理化学成分

名称1 5 4 3 2 1

lolk 5 2 1 4 100

TT_EOL

public final static int TT_EOL = 'n'

说明

此标记类型表示已到达行的末尾。除非调用了eolIsSignificant(true),否则nextToken()不会返回该值。

eolIsSignificant(false)是默认状态。所以,让它成为现实,并运行它将工作的代码。当为假时,下一个令牌将不返回TT_EOL。

使用以下代码进行检查。

     FileReader fr = new FileReader("input.txt");
                    StreamTokenizer st = new StreamTokenizer(fr);
                    st.eolIsSignificant(true);//add this line
                    System.out.printf("%26s","Student Marksheet");
                    System.out.println(); 
                    int  tokenType=0;
                     do{
                          tokenType=st.nextToken();
                     if(tokenType==StreamTokenizer.TT_WORD) System.out.print(st.sval+"      ");
                      if(tokenType==StreamTokenizer.TT_NUMBER) System.out.print(st.nval+"      ");
                      if(tokenType==StreamTokenizer.TT_EOL) System.out.println(""); //this line is the problem
                     } while(tokenType!=StreamTokenizer.TT_EOF); 
                }

相关内容

  • 没有找到相关文章

最新更新