我正在使用Java + Selenium 1来测试Web应用程序。
我必须使用befferedreader.readLine逐行读取文本文件,并将找到的数据与另一个String进行比较。
有没有办法为每一行分配一个唯一的字符串?我认为会是这样的:
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;
}
答案 0 :(得分:1)
问题在于您不知道有多少行,因此您无法正确调整数组大小。请改用List<String>
。
答案 1 :(得分:1)
为了降低重要性,
String
存储在数组中。ArrayList
这样的可调整大小的集合。DataInputStream
:您可以直接将FileInputStream
包裹在InputStreamReader
中。答案 2 :(得分: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类通常是读取文件的好类:)
根据建议,您可以一次检查一行,而不是在处理它们之前将它们全部加载到内存中。如果您的文件相对较小,这可能不是问题,但您最好保持代码可伸缩性,特别是对于完全相同的事情:)