Mik*_*ike 4 java java.util.scanner
我有一个非常大的文本文件,我需要从最近的某个地方收集数据.也许Scanner并不是最好的方法,但是在获取我感兴趣的文件部分之前从顶部开始并抓住6000行是非常浪费的.有没有办法告诉Scanner跳转到比如文件的7/8或从底部开始向上扫描并逐行抓取?
谢谢
a的基础输入源java.util.Scanner是a java.lang.Readable.除了Scanner(File)构造函数之外,Scanner既不知道也不关心它正在扫描文件.
此外,由于它是基于正则表达式java.util.regex.*,因此无法向后扫描.
要完成您想要做的事情,最好在输入源级别执行此操作,例如InputStream.skip在将源传递给构造函数之前使用源代码Scanner.
Scanner.skipScanner它本身确实有一个skip,并且模式"(?s).{10}"会跳过10个字符(在(?s)单行/ Pattern.DOTALL模式下),但这可能是一种相当迂回的方式.
这是一个使用skip跳过给定行数的示例.
String text =
"Line1 blah blah\n" +
"Line2 more blah blah\n" +
"Line3 let's try something new \r\n" +
"Line4 meh\n" +
"Line5 bleh\n" +
"Line6 bloop\n";
Scanner sc = new Scanner(text).skip("(?:.*\\r?\\n|\\r){4}");
while (sc.hasNextLine()) {
System.out.println(sc.nextLine());
}
Run Code Online (Sandbox Code Playgroud)
打印(如ideone.com上所示):
Line5 bleh
Line6 bloop
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10320 次 |
| 最近记录: |