使用java.util.Scanner
实例,是否可以返回所有剩余内容?我的情况是,一旦我在String
内阅读了许多字段,我只想得到剩下的东西并将其存储在其他地方。例如,我的内容可能包括:
1,2,Some Garbage with \' special characters and so on
我会使用,
作为分隔符构建扫描程序,调用getInt()
两次,然后想要在一次调用中返回"Some Garbage with \' special characters and so on"
。
答案 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”,所以只需使用有效载荷流读取它。