Java扫描器“;倒带“;

Java扫描器“;倒带“;,java,parsing,Java,Parsing,我正在使用Java Scanner对象解析文本文件。 我需要扫描文件的一部分两次(出于性能原因,所以我不必临时存储其内容) 因此,是否有办法将扫描仪“倒带”到特定的文件位置 或者,是否有方法克隆扫描仪,以便我可以独立使用每个实例(即,它们不会移动彼此的文件位置指针) 非常感谢,, 托马斯 编辑: 显然,只扫描一次文件并直接处理它始终是可能的,但会在现有的代码库中产生显著的额外复杂性,因此需要扫描两次文件的相同部分 简而言之:该文件包含数千个逻辑项目,要处理其中的一些项目,我需要从项目开始,在项目

我正在使用Java Scanner对象解析文本文件。 我需要扫描文件的一部分两次(出于性能原因,所以我不必临时存储其内容)

因此,是否有办法将扫描仪“倒带”到特定的文件位置

或者,是否有方法克隆扫描仪,以便我可以独立使用每个实例(即,它们不会移动彼此的文件位置指针)

非常感谢,, 托马斯

编辑:

显然,只扫描一次文件并直接处理它始终是可能的,但会在现有的代码库中产生显著的额外复杂性,因此需要扫描两次文件的相同部分


简而言之:该文件包含数千个逻辑项目,要处理其中的一些项目,我需要从项目开始,在项目末尾存储一个信息。

需要时,只需创建一个新的Scanner实例。即使可以,克隆它也没有必要,也没有好处。与“重新缠绕”相同——如果需要重新读取文件,只需创建一个新的扫描仪。我将探索如何存储您需要的位,因为我相信这将更有效

作为一个旁白:考虑告诉我们更多关于你的要求和任何限制背后的推理,因为这些信息可以帮助我们给你更好的答案。

< P>从这里被盗:

Java的扫描器没有文件“倒带”方法,但是您可以通过关闭扫描器并重新打开它来获得相同的效果


Thx但新扫描仪如何“指向”文件中的同一位置?@Tom为什么不告诉我们更多关于您在这里试图实现的目标?根据需要使用skip或seek。@PeterLawrey:对于
扫描仪
,没有
seek
,只有
skip
,但是
skip
将与
模式一起使用<代码>扫描仪
不是
读取器
。您需要跳过或查找底层流并从那里读取。这意味着在许多情况下使用新的扫描仪,因为它是有状态的。您的性能限制是什么?文本文件很大吗?否则,只需对其进行多次处理,并在出现问题时进行优化,速度可能会达到可接受的程度。与保存所需文件相比,重新读取文件的效率要高出多少GB?10 GB,100 GB,1 TB?你不会用扫描仪的。你会使用真正的文件IO;无论是
RandomAccessFile
还是NIO@BrianRoach,这些库都会让解析文本变得很棘手。谢谢,但我真正需要的是回放到特定的文件位置(而不是文件的开头)。干杯