有没有办法可以重复使用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读取行和关闭文件。 在客户端类中,我调用了这些方法。