Java从缓冲读取器创建字符串并比较字符串
我正在使用Java+Selenium 1测试一个web应用程序 我必须使用befferedreader.readLine逐行读取文本文件,并将找到的数据与另一个字符串进行比较 有没有办法给每一行分配一个唯一的字符串?我想应该是这样的:Java从缓冲读取器创建字符串并比较字符串,java,bufferedreader,Java,Bufferedreader,我正在使用Java+Selenium 1测试一个web应用程序 我必须使用befferedreader.readLine逐行读取文本文件,并将找到的数据与另一个字符串进行比较 有没有办法给每一行分配一个唯一的字符串?我想应该是这样的: FileInputStream fstream = new FileInputStream("C:\\write.txt"); DataInputStream in = new DataInputStream(fstream); Buffe
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;
}
问题是您不知道有多少行,因此无法正确调整数组大小。改为使用
列表。按重要性递减的顺序
- 正如Perception所指出的,您根本不需要将
字符串存储在数组中
- 正如Qwerky所指出的,您不知道有多少行,如果您确实需要存储它们,您应该使用可调整大小的集合,如
ArrayList
- 不需要
DataInputStream
:您可以直接将FileInputStream
包装在InputStreamReader
中
您可以尝试以下方法:
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);
}
该类通常是读取文件的好类:)
正如建议的那样,您可以一次检查一行,而不是在处理它们之前将它们全部加载到内存中。如果文件相对较小,这可能不是问题,但最好保持代码的可伸缩性,尤其是在执行完全相同的操作时:)实际上根本不需要字符串数组,除非您计划稍后使用它。只需使用您已经创建的strLine变量。