【发布时间】:2012-12-20 00:00:09
【问题描述】:
我正在研究一种解析器(爱好项目),它获取一个 Cpp 文件,读取文件中的 cmets,然后尝试基于该文件创建一个头文件。
我面临的问题是当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;
【问题讨论】:
-
您可以尝试将您的while循环从
line!=null更改为scanner.hasNext(),然后将scanner.next()放入循环中。
标签: java parsing java.util.scanner