Java readline()正在跳过第二行

Java readline()正在跳过第二行,java,Java,我有一个我想读的问题文件,在阅读时,我想让它从答案中识别问题并打印出来,在每个问题出现一行“#”字符之前,代码出于某种原因一直跳过问题1?我错过了什么 代码如下: try { // Open the file that is the first // command line parameter FileInputStream fstream = new FileInputStream(path);

我有一个我想读的问题文件,在阅读时,我想让它从答案中识别问题并打印出来,在每个问题出现一行“#”字符之前,代码出于某种原因一直跳过问题1?我错过了什么

代码如下:

     try {
            // Open the file that is the first
            // command line parameter
            FileInputStream fstream = new FileInputStream(path);
            BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
            String strLine;
            strLine = br.readLine();
            System.out.println(strLine);
            // Read File Line By Line
            while ((strLine ) != null) {
                strLine = strLine.trim();

                if ((strLine.length()!=0) && (strLine.charAt(0)=='#' && strLine.charAt(1)=='#')) {

                    strLine = br.readLine();
                        System.out.println(strLine);
                        //questions[q] = strLine;

                }

                strLine = br.readLine();
            }

            // Close the input stream
            fstream.close();
           // System.out.println(questions[0]);

        } catch (Exception e) {// Catch exception if any
            System.err.println("Error: " + e.getMessage());
        }

请注意,在while或not中输入if语句时,首先要执行
strLine=br.readLine()
将覆盖初始化时读取的行
strline

请注意,在while或not中输入if语句时,首先执行
strline=br.readLine()
会覆盖初始化时读取的行
strline

我怀疑您读取的文件是UTF-8格式的,带有BOM

BOM表是第一个字符之前的代码,有助于识别文本文件的正确编码

BOM表的问题是,它是不可见的,会干扰读数。具有BOM表的文本文件不再是文本文件。特别是,如果阅读第一行,第一个字符不再是
,而是不同的字符,因为它是字符BOM+

尝试加载指定显式编码的文件。Java可以在较新的版本中处理BOM,但不记得具体是哪个版本

BufferedReader br = new BufferedReader(new InputStreamReader(fstream, "UTF-8"));

否则,使用像样的文本编辑器,如记事本+,将编码更改为不带BOM的UTF-8或ANSI编码(恶心)。

我怀疑您读取的文件是带BOM的UTF-8

BOM表是第一个字符之前的代码,有助于识别文本文件的正确编码

BOM表的问题是,它是不可见的,会干扰读数。具有BOM表的文本文件不再是文本文件。特别是,如果阅读第一行,第一个字符不再是
,而是不同的字符,因为它是字符BOM+

尝试加载指定显式编码的文件。Java可以在较新的版本中处理BOM,但不记得具体是哪个版本

BufferedReader br = new BufferedReader(new InputStreamReader(fstream, "UTF-8"));

否则,使用一个像样的文本编辑器,如记事本+,将编码更改为UTF-8,而不使用BOM或ANSI编码(恶心)。

不太清楚您在问什么或要解决什么问题。先把问题分解成几个小部分,然后试着用一个小的、简化的版本来描述你遇到的问题。你愿意把你的问题标题改为“readline()跳过第一行”吗?这实际上更符合你的问题:)@thst no,因为第一行是“##############”,它会打印出来,但后面的行不会。是的,这不是一个好建议,在我的TZ中为时已晚:-)我的建议应该是,问题清楚地表明,第一行没有正确识别。跳过第二行只是结果。你问什么或者你想解决什么问题都不是很清楚。先把问题分解成几个小部分,然后试着用一个小的、简化的版本来描述你遇到的问题。你愿意把你的问题标题改为“readline()跳过第一行”吗?这实际上更符合你的问题:)@thst no,因为第一行是“##############”,它会打印出来,但后面的行不会。是的,这不是一个好建议,在我的TZ中为时已晚:-)我的建议应该是,问题清楚地表明,第一行没有正确识别。跳过第二行只是结果。这绝对不是问题所在,因为我也在while循环之前打印它!这绝对不是问题所在,因为我也在while循环之前打印它!