2011-07-22 9 views
0

Java + Selenium 1を使用してWebアプリケーションをテストしています。JavaはBuffered Readerから文字列を作成し、文字列を比較します

befferedreader.readLineを使用してテキストファイルを1行ずつ読み込み、見つかったデータを別の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; 
    } 
+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行をチェックすることを読むのに最適なクラスですそれらを処理する前にメモリにすべてロードするのではなく、あなたのファイルが比較的小さいが、コードをスケーラブルに保つ方が良い場合は特に問題はないかもしれません。

1

これに伴う問題は、あなたがそこにある何行かわからないので、あなたは、サイズ正しく配列ではないということです。私はこのようなものになるだろうと思います。代わりにList<String>を使用してください。重要性を減少させるためには

1

  • 知覚によって指摘されているようにあなたは、全くのアレイにString Sを保管する必要はありません。
  • Qwerkyによって指摘されているように、いくつの行があるか分からないので、それらを保存する必要がある場合はArrayListのようなサイズ変更可能なコレクションを使用する必要があります。
  • DataInputStreamは不要です。FileInputStreamをそのままInputStreamReaderにラッピングすることができます。