Java BufferedReader.readLine doeasn';t从文件开头开始并跳过行
我需要逐行读取一个文本文件,直到找到一个特定的字符串。我使用的是Java BufferedReader.readLine doeasn';t从文件开头开始并跳过行,java,eclipse,Java,Eclipse,我需要逐行读取一个文本文件,直到找到一个特定的字符串。我使用的是BufferedReader.readLine(),但是当我调试时,我发现它从文件中的第三行开始,然后跳过第三行。 这是我的密码: try { reader = new BufferedReader(new FileReader(path)); String line1 = null; while ((line1 = reader.readLine()) != null) { if (li
BufferedReader.readLine()
,但是当我调试时,我发现它从文件中的第三行开始,然后跳过第三行。
这是我的密码:
try {
reader = new BufferedReader(new FileReader(path));
String line1 = null;
while ((line1 = reader.readLine()) != null) {
if (line1.toString() == invocation0) {
found = true;
return false;
} else if (line1 == invocation1) {
found = true;
return true;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (reader != null)
try {
reader.close();
} catch (IOException e) {
}
}
我非常感谢任何帮助,因为我尝试了许多不同的解决方案,但仍然无法解决这个问题
该文件的内容如下所示:
//============================================================================
.//文件:abc.mark
.//描述:任何东西
注意:什么都可以
.// .//============================================================================
.调用RemoveClass(“属性”,0)
使用equals()
方法进行String
值比较
此外,您可以使用中断
,而不是if
中的返回
。不过,这只是一个建议
使用equals()
方法进行String
值比较
此外,您可以使用
中断
,而不是if
中的返回
。不过这只是一个建议。BufferedReader不应该跳过任何内容。不幸的是,正是您让read方法跳过了这一行。Equality操作符==
不会比较任何两个字符串的内容,而是比较它们是否属于同一对象。你可以通过两种方式避免它
这可能有助于您更好地理解它。BufferedReader不应该跳过任何内容。不幸的是,正是您让read方法跳过了这一行。Equality操作符
==
不会比较任何两个字符串的内容,而是比较它们是否属于同一对象。你可以通过两种方式避免它
这可能有助于您更好地理解它。不,BufferedReader确实不这么做。请编辑您的文章,包括一个简短但完整的程序,演示问题(有适当的缩进),一个示例文本文件,预期输出和实际输出。我注意到您正在使用
==
检查字符串是否相等,这可能是真正的问题。请参阅使用.equals方法而不是==。另外,您不需要在“line1.toString()”中使用toString()方法,因为line1是一个字符串。不,BufferedReader实际上不这样做。请编辑您的文章,包括一个简短但完整的程序,演示问题(有适当的缩进),一个示例文本文件,预期输出和实际输出。我注意到您正在使用==
检查字符串是否相等,这可能是真正的问题。请参阅使用.equals方法而不是==。另外,您不需要在“line1.toString()”中使用toString()方法,因为line1是一个字符串。如果您能帮助我解决一个大问题,那就是line1=reader.readLine()的值不正确,我将不胜感激。它跳过行并从文件的中间开始。因为正如@JonSkeet提到的,BufferedReader
本身不会跳过行。@MariamSherif-我刚刚尝试了您更新的文本,它只从起始行开始读取(正如它会、应该和做的那样)。关于我的环境中为什么仍然存在问题的任何建议请执行以下操作:-while((line1=reader.readLine())!=null){System.out.println(line1);
并显示sysout正在打印的输出。如果您能帮我解决一个大问题,我将不胜感激不正确。它跳过行并从文件的中间开始。因为正如@JonSkeet提到的,BufferedReader
本身不会跳过行。@MariamSherif-我刚刚尝试了您更新的文本,它只从起始行开始读取(正如它所做的那样,应该&做的那样)。关于我的环境中为什么仍然存在问题的任何建议请执行以下操作:-while((line1=reader.readLine())!=null){System.out.println(line1);
并显示sysout正在打印的输出。我将我的代码编辑为:try{reader=new BufferedReader(new FileReader(path));字符串line1=null;while((line1=reader.readLine())!=null){System.out.println(line1);}}}catch(异常e){e.printStackTrace();}最后{如果(reader!=null)尝试{reader.close();}捕获(IOE){}打印的行与文件不一样。它仍然跳过行!!你能发布完整的代码片段,包括调用是什么意思吗?忘记调用,我现在只想逐行阅读文件,并在控制台上打印每一行,就像我在前面的评论中提到的我将代码编辑为:try{reader=new BufferedReader(new FileReader(path));字符串line1=null;while((line1=reader.readLine())!=null){System.out.println(line1);}}}catch(异常e){e.printStackTrace();}最后{if(reader!=null)试试看{reader.close();}catch(IOE异常){}打印的行与文件不一样。它仍然跳过行!!你能发布完整的代码片段,包括调用是什么意思吗?忘记调用吧,我现在只想逐行阅读文件,并在控制台上打印每一行,就像我在前面的评论中提到的那样
if(line1.equals(invocation0))