查找一行的行号和内容,然后在另一个文件JAVA

时间:2016-04-07 16:16:59

标签: java

我有这个代码打开文件并获取行号,但是如果我想打开另一个文件,其内容与第一个文件不同并找到相同的行号,我该怎么做呢最好的方法?我从哪里开始?
  我是这个网站和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();
        }
    }
}

2 个答案:

答案 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"));
}
}