2011-07-22 69 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中。