我有这个代码打开文件并获取行号,但是如果我想打开另一个文件,其内容与第一个文件不同并找到相同的行号,我该怎么做呢最好的方法?我从哪里开始?
我是这个网站和Java的新手,所以请放轻松我...
public class c {
public static void main(String args[]) {
File file =new File("one.txt");
Scanner in = null;
try {
int counter = 0;
in = new Scanner(file);
while(in.hasNext()) {
counter++;
String line=in.nextLine();
if(line.contains("umbrella")) {
System.out.println(line + " line: " + counter);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:1)
你可以打开另一个文件,然后读取行并增加一个计数器(counter2),直到你的counter2到达你的counter-Variable(来自上面的代码片段)。你还必须注意文件是否已经结束。
“代码”中有许多类似的元素,就像您在问题中使用的元素一样。
答案 1 :(得分:0)
最好的方法取决于您正在开发的环境。你可以创建File和Scanner类的其他实例来操作不同的文件,就像你在代码中已经完成的那样,并且已经在评论中提到了。
另一种方法是创建一个可以为您处理此问题的类。在这种情况下,您可以将此类用于您需要完成相同操作的无限数量的文件。
public class FileLineCounter {
public FileLineCounter( String filename)
{
try
{
f = new File(filename);
s = new Scanner(f);
}
catch(FileNotFoundException ex)
{
ex.printStackTrace();
}
}
public int getLineNumber( String item)
{
counter = 0;
while( s.hasNext())
{
counter++;
String line = s.nextLine();
if (line.contains(item))
{
break;
}
}
return counter;
}
private File f;
private Scanner s;
private int counter;
};
package FileUtil;
import FileUtil.FileLineCounter;
public class Main {
public static void main(String[] args)
{
String file1 = "one.txt";
String file2 = "two.txt";
FileLineCounter f1 = new FileLineCounter(file1);
FileLineCounter f2 = new FileLineCounter(file2);
System.out.println( file1 + " line : " + f1.getLineNumber("umbrella"));
System.out.println( file2 + " line : " + f2.getLineNumber("umbrella"));
}
}