Java从Buffered Reader创建字符串并比较字符串

时间:2011-07-22 14:09:38

标签: java bufferedreader

我正在使用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;
    }

3 个答案:

答案 0 :(得分:1)

问题在于您不知道有多少行,因此您无法正确调整数组大小。请改用List<String>

答案 1 :(得分:1)

为了降低重要性,

  • 根据Perception的指示,您根本不需要将String存储在数组中。
  • 你不知道有多少行,正如Qwerky所指出的,如果你确实需要存储它们,你应该使用像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类通常是读取文件的好类:)

根据建议,您可以一次检查一行,而不是在处理它们之前将它们全部加载到内存中。如果您的文件相对较小,这可能不是问题,但您最好保持代码可伸缩性,特别是对于完全相同的事情:)