Java Scanner hasNextLine returning false
这可能是由于我对代码的熟悉程度高于其他任何原因,但我仍然遇到以下问题:
我有一个空行的文本文件和一个遍历该文件的扫描程序。
当我使用.hasNextLine()方法时,即使文件中有更多行,它也会返回false。 我必须指出,文件以空行开头,文本内部的空行更多,最后以空行结束。
但不管线条是否有文字,它都不应该返回真实的吗?
是的,它应该。
试试这个:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public static void main(String[] args){ Test t = new Test(); t.testHNL(new File("test.txt")); } public void testHNL(File f){ try { Scanner s = new Scanner(new FileInputStream(f)); while(s.hasNextLine()){ System.out.println("There is another line! ::"+s.nextLine()); } System.out.println("There are no more lines :'("); } catch (FileNotFoundException e) { e.printStackTrace(); } } |
确保文件"text.txt"存在,并且只有回车符。 然后运行它。
使用
您遇到了问题,因为只有当下一行中包含某些内容时,
从SUNs(oracles?)1.5 JDK的源代码中,与下列正则表达式匹配的任何内容都被视为"行"。 这包括Windows或linux / unix下的空行。
1 2 3 4 5 6 |
所以它应该返回true,即使行是空的,除了回车。