我对过去做过的事情有一个疑问,但从来没有真正想过这是否是最有效的方法。
假设我有一个文本文件,其中每一行都包含重要的内容,然后假设我有多组这样的行,每一行对应一个独特的环境…例如:
1
String that I need to parse for specific tokens..
2
String that I need to parse for specific tokens..
String that I need to parse for specific tokens..
3
String that I need to parse for specific tokens..
String that I need to parse for specific tokens..
String that I need to parse for specific tokens..
因此,给定上述输入文件,我过去解决这个问题的方法类似于以下内容(半伪代码!):
BufferedReader inputFile = new BufferedReader(new FileReader("file.txt"));
while(inputFile.hasNextLine())
{
Scanner line = new Scanner(inputFile.nextLine());
//parse the line looking for tokens
}
inputFile.close();
我的问题是,为我的BufferedReader中的每一行创建一个新的Scanner对象似乎非常低效。
有没有更好的方法来实现这个功能?
一个建议可能是通过令牌扫描整个文档,但我的问题是,我将无法跟踪有多少字符串是子集的一部分(由整数表示);或者至少我想不出其他解决方案,除了每次看到新行时减少计数器。
提前感谢!
看看这个;
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new FileReader(new File("d:/sample.txt")));
LineNumberReader lr = new LineNumberReader(bf);
String line = "";
while ((line = lr.readLine()) != null) {
System.out.println("Line Number " + lr.getLineNumber() +
": " + line);
}
}