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