我正在使用Scanner在java中读取文件。在阅读过程中,我想在读取文件时将特殊段落保存在数组中,因此我需要使用额外的扫描程序来完成它。我不能使用一台扫描仪,因为两台扫描仪以不同方式处理文件(具有不同的责任)。在下面的代码中,我如何制作扫描副本?
Scanner scan = new Scanner("test.txt");
while(scan.hasNext())
{
String token = scan.next();
if(token.compare("START")==0)
{
Scanner temp = scan; //How can I make a copy of scan?
//scan.clone() does not work
String curVal =temp.next();
while(curVal.compare("END") != 0)
{
...
curVal =temp.next() //scan should not go to the next value
}
}
}
Example:
1H2i345
Thi67s
START
I am5678 special bla790b bla...
END
We are continuing.
output:
String special_para ="I am5678 special bla790b bla..."
The scan should remove all the numbers (it is just an example what scan does is much more complicated)
答案 0 :(得分:1)
对象具有可用于复制对象的克隆方法。 http://en.wikipedia.org/wiki/Clone_(Java_method)
你想通过复制它来完成什么?可能有更好的解决方案。
答案 1 :(得分:1)
我认为您不需要第二台扫描仪。您只需添加一个标志和一个新条件。 (除非我误解,你做需要回到文件的开头。)
bool insideStartBlock = false;
Scanner scan = new Scanner("test.txt");
while(scan.hasNext())
{
String token = scan.next();
if("START".equals(token))
{
insideStartBlock = true;
}
else if ("END".equals(token)
{
insideStartBlock = false;
}
else if (insideStartBlock)
{
...
<do work based on token>
...
}
}