使用Java scanner获取行号

时间:2014-06-17 14:43:52

标签: java java.util.scanner

我正在使用下面的代码比较两个文件输入流并进行比较:

        java.util.Scanner scInput1 = new java.util.Scanner(InputStream1);
        java.util.Scanner scInput2  = new java.util.Scanner(InputStream2);

        while (scInput1 .hasNext() && scInput2.hasNext())
        {
         // do some stuff
         // output line number of InputStream1 
         }
       scInput1.close();
       scInput2.close();

如何在while循环中输出行号?

1 个答案:

答案 0 :(得分:1)

InputStreamReader上使用LineNumberReader。因为它是为了这个唯一目的而制造的。

try (LineNumberReader scInput1 = new LineNumberReader(new InputStreamReader(
        inputStream1, StandardCharsets.UTF_8));
    LineNumberReader scInput2 = new LineNumberReader(new InputStreamReader(
        inputStream2, StandardCharsets.UTF_8))) {

    String line1 = scInput1.readLine();
    String lien2 = scInput2.readLine();
    while (line1 != null && line2 != null) {
        ...
       scInput1.getLineNumber();
       line1 = scInput1.readLine();
       line2 = scInput2.readLine();
    }
}

这里我添加了可选的CharSet参数。 扫描仪具有不需要的额外标记功能。