Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 而带有缓冲读卡器读线的循环只循环一次并进入无限循环_Java - Fatal编程技术网

Java 而带有缓冲读卡器读线的循环只循环一次并进入无限循环

Java 而带有缓冲读卡器读线的循环只循环一次并进入无限循环,java,Java,我是java新手,我有一个程序,应该使用bufferred read读取文件,并对结果执行一些操作。程序只读取第一行和第二行,进入无限循环。我尝试了不同的文件,但得到了相同的结果 private void readingFile(){ DataType type; String line; Log log = new Log(writeFile); try(BufferedReader reader = Files.newBufferedReader(Paths.

我是java新手,我有一个程序,应该使用bufferred read读取文件,并对结果执行一些操作。程序只读取第一行和第二行,进入无限循环。我尝试了不同的文件,但得到了相同的结果

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是阻塞的,这就是程序不断循环的原因。谢谢