java.util.Scanner读取剩余内容

时间:2012-03-18 09:08:08

标签: java java.util.scanner

使用java.util.Scanner实例,是否可以返回所有剩余内容?我的情况是,一旦我在String内阅读了许多字段,我只想得到剩下的东西并将其存储在其他地方。例如,我的内容可能包括:

1,2,Some Garbage with \' special characters and so on

我会使用,作为分隔符构建扫描程序,调用getInt()两次,然后想要在一次调用中返回"Some Garbage with \' special characters and so on"

2 个答案:

答案 0 :(得分:3)

作为AlexR's answer points,读取原始流应该更好 - 但在我的情况下,它被消耗掉并且无法被重新加入。

Scanner to read 'all': \\A中有一个特殊字符/分隔符。因此,如果你想要扫描仪的其余部分,你可以改变它:

scanner.useDelimiter("\\A");
String content = scanner.hasNext() ? scanner.next() : null;

答案 1 :(得分:2)

使用扫描仪没有“好”的方法。你可以试试 String next(Pattern pattern)传递给多行模式,如$

Pattern p = Pattern.compile("$", Pattern.MULTILINE);

我没试过,但它可能会奏效。只要不要忘记在输入中剩余几行时检查它。

但是我认为更好的方法就是使用循环中的普通read(byte[])方法从包装的输入流中读取。这是因为扫描仪没有按原样读取流。人们可以阅读单独的字段。它做得很好。在你的情况下,你只想阅读“blob”,所以只需使用有效载荷流读取它。