2016-04-07 72 views
0

我得到這段代碼來打開一個文件並獲取行號,但是如果我想打開另一個文件的內容是不一樣的第一個文件,並找到相同的行號,我怎麼能做到最好的方式?我從哪裏出發?
我是新來這個網站,到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(); 
     } 
    } 
} 

回答

1

您可以打開其他文件,並讀取線,並增加一個計數器(C2的),直到你的計數器2達到你的反變量(從上面的代碼片段)。您還必須注意文件是否尚未結束。

該代碼有許多類似的元素,如你已經在你的問題中使用的元素。

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")); 
} 
} 
相關問題