将文件指针重置回起始位置

时间:2016-07-31 13:52:31

标签: java

有没有办法可以重复使用Scanner对象再次读取同一个文件。

有RandomAccessFile类提供随机访问(搜索),但我正在寻找一些使用Scanner的代码。我知道如何通过创建一个新的Scanner对象来转到文件的说明位置,但代码看起来很乱。

是否有一个简洁的方法来做同样的事情。 在此先感谢: - )

您也可以建议学习文件处理的良好来源/教程:p

以下是我要做的事情:

Container.java

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Formatter;
import java.util.Scanner;

public class Container {
    private Scanner sc;
    private Formatter f;

    void openFile() throws FileNotFoundException{
            sc=new Scanner(new File("source"));
    }

    void readData(){
            while(sc.hasNext()){
                    System.out.println(sc.next());
            }
    }
    void readlineData(){
            while(sc.hasNextLine()){
                    System.out.println(sc.nextLine());
            }
    }

    void closeFile(){
            sc.close();
    }

    void addData() throws FileNotFoundException{
            f=new Formatter("source");
            f.format("%s%s", "hi "," hello");
    }
}

Client.java

import java.io.FileNotFoundException;

public class Client {

    public static void main(String[] args) throws FileNotFoundException {
            Container c=new Container();
            try {
                    c.openFile();
            } catch (FileNotFoundException e) {
                    System.out.println("No file with this name");
            }
            //reading word by word
            c.readData();//there is content already in the file
            //reading line by line
            c.readlineData();
            //changing the content of the file
            c.addData();
            //reading the file again
            c.readData();
        //closing the file
            c.closeFile();
    }
}

这里我创建了一个客户端和一个容器类。 在容器类中,我有创建文件的方法,逐字读取文件,通过liine读取行和关闭文件。 在客户端类中,我调用了这些方法。

0 个答案:

没有答案