在我的任务中,我试图读取一个文件并逐行打印。我试图再次使用hasNextLine,它不起作用。我试图以某种方式完成它,但我想知道是否有某种方式我可以再次浏览我的文件而无需创建新的扫描仪。
这是我的代码段
sc = new Scanner(new File(args[0]));
while (sc.hasNextLine()) {
System.out.println(sc.nextLine());
}
我想稍后再使用,但我不能这样做。有没有办法重置或将其重新置于顶部并再次遍历文件。
答案 0 :(得分:1)
关闭第一个后,您可以创建一个新的Scanner
:
sc.close();
sc = new Scanner(new File(args[0]));
// do the same thing again
答案 1 :(得分:0)
要进行优化,您可以保存对文件的引用以供将来使用。
File f = new File(args[0]);
sc = new Scanner(f);
//...
sc = new Scanner(f);
扫描仪不是智能迭代器,因此创建新成本的成本可能小于“倒带”旧成本。
答案 2 :(得分:0)
您可以使用FileReader
装饰RandomAccessFile
:
RandomAccessFile f = new RandomAccessFile(args[0], "r");
Scanner sc = new Scanner(new FileReader(f.getFD()));
//Read through scanner
//Rewind file
f.seek(0L);
//Read through file again