2011-07-22 106 views
0

我正在使用Java + Selenium 1來測試Web應用程序。Java從Buffered Reader創建字符串並比較字符串

我必須通過使用befferedreader.readLine逐行讀取文本文件,並將找到的數據與另一個字符串進行比較。

是否有辦法爲每行分配一個唯一的字符串?我認爲這將是這樣的:

FileInputStream fstream = new FileInputStream("C:\\write.txt"); 
    DataInputStream in = new DataInputStream(fstream); 
    BufferedReader br = new BufferedReader(new InputStreamReader(in)); 

    String strLine; 
    String[] strArray = null; 
    int p=0; 
     // Read File Line By Line 

    while ((strLine = br.readLine()) != null) { 
     strArray[p] = strLine; 
     assertTrue(strArray[p].equals(someString)); 
     p=p+1; 
    } 
+1

你實際上並不需要字符串數組,除非你打算做稍後再用它。只需使用已經創建的strLine變量即可。 – Perception

回答

0

你可能想嘗試這樣的:

public final static String someString = "someString"; 

public boolean isMyFileOk(String filename){ 
    Scanner sc = new Scanner(filename); 
    boolean fileOk = true; 
    while(sc.hasNext() && fileOk){ 
     String line = sc.nextLine(); 
     fileOk = isMyLineOk(line); 
    } 
    sc.close(); 
    return fileOk; 
} 

public boolean isMyLineOk(String line){ 
    return line.equals(someString); 
} 

Scanner類通常是一個偉大的類來讀取文件:)

而作爲建議,你可以一次檢查一行而不是在處理它們之前將它們全部加載到內存中。這可能不是問題,如果你的文件比較小,但你最好保持你的代碼的可擴展性,特別是做同樣的事情:)

1

這裏的問題是,你不知道有多少行有,所以你不能正常大小的數組。改爲使用List<String>

1

在重要性遞減順序,

  • 你並不需要將String 4S店在數組中所有的,因爲通過感知指出。
  • 你不知道有多少行,所以Qwerky指出,如果你確實需要存儲它們,你應該使用一個可調整大小的集合,如ArrayList
  • DataInputStream不需要:您可以直接將FileInputStream包裝在InputStreamReader中。