2012-12-20 59 views
0

我正在研究一种解析器(爱好项目),它需要一个Cpp文件,读取文件中的注释,然后尝试基于此创建头文件。扫描器中的NoSuchElementException

我面临的问题是当java.util.Scanner即将读取第一行。程序停止并给我NoSuchElementException。我无法弄清楚什么是错的。我检查了路径和路径名都是正确的。该文件必须在那里,并且我可以读取Scanner对象上的字段以及调试时。那么究竟是什么问题呢?

有人暗示它可能认为文件中没有行。发生

问题在while((line = scanner.next()) != null) {

@Override 
public void run() { 
    Scanner scanner = null; 
    String filename = "", path = ""; 
    StringBuilder puBuilder, prBuilder, viBuilder; 
    puBuilder = new StringBuilder(); 
    prBuilder = new StringBuilder(); 
    viBuilder = new StringBuilder(); 
    for(File f : files) { 
     try { 
      filename = f.getName(); 
      path = f.getAbsolutePath(); 
      path = path.replace(filename, ""); 
      filename = filename.replace(".cpp", ""); 
      scanner = new Scanner(new FileReader(f)); 
     } catch (FileNotFoundException ex) { 
      System.out.println("FileNotFoundException: " + ex.getMessage()); 
     } 

     String line; 
     String tag; 
     while((line = scanner.next()) != null) { 
      line = line.trim(); 
      if(line.startsWith(PUBLIC)) { 
       tag = PUBLIC; 
+0

你可以尝试改变你的while循环从'line!= null'到scanner.hasNext(),然后在循环内部有scanner.next()。 – Thomas

回答

0

Scanner.next抛出一个异常NoSuchElement如果没有更多的令牌。

我看到你正在迭代文件列表。您在列表中获得的第一个文件是否可能是空的?

你能打印出文件的名称并检查确认吗?

相关问题