Java 而带有缓冲读卡器读线的循环只循环一次并进入无限循环
我是java新手,我有一个程序,应该使用bufferred read读取文件,并对结果执行一些操作。程序只读取第一行和第二行,进入无限循环。我尝试了不同的文件,但得到了相同的结果Java 而带有缓冲读卡器读线的循环只循环一次并进入无限循环,java,Java,我是java新手,我有一个程序,应该使用bufferred read读取文件,并对结果执行一些操作。程序只读取第一行和第二行,进入无限循环。我尝试了不同的文件,但得到了相同的结果 private void readingFile(){ DataType type; String line; Log log = new Log(writeFile); try(BufferedReader reader = Files.newBufferedReader(Paths.
private void readingFile(){
DataType type;
String line;
Log log = new Log(writeFile);
try(BufferedReader reader = Files.newBufferedReader(Paths.get(readFile))){
while ((line = reader.readLine()) != null){
if (line.charAt(0) == '#' || line.charAt(0) == '/') {
continue;
}
String[] lineArray = line.split(" - ", 2);
String one = lineArray[0];
String two = lineArray[1];
type = new DataType(one, two);
queue.put(type);
log.readMessage(one, two);
}
}
catch (Exception ex){
System.out.println(ex.getClass().getSimpleName() + "-" +
ex.getMessage());
}
}
声明的内容是:
log.readMessage(one, two);
是吗?它会在有限的时间内返回吗
请在删除以下行的同时再次尝试运行程序:
String[] lineArray = line.split(" - ", 2);
String one = lineArray[0];
String two = lineArray[1];
type = new DataType(one, two);
queue.put(type);
log.readMessage(one, two);
您是如何发现这是一个无限循环而不是对
readLine()
的阻塞调用的?请调试你的程序。一些打印语句和控制台输出证明while循环是无限的将有助于。。。我看不出你的while循环有任何问题。注释掉了行,queue.put(type),现在它可以正常工作了。唯一的问题是我不能向队列添加条目。我相信queue.put应该是用来控制这两个字符串的,所以我认为queue.put是阻塞的,这就是程序不断循环的原因。谢谢