2012-02-10 20 views
0
FileInputStream fstream = new FileInputStream("data.txt"); 

// Get the object of DataInputStream 
DataInputStream in = new DataInputStream(fstream); 

BufferedReader br = new BufferedReader(new InputStreamReader(in)); 

String strLine; 
//Read File Line By Line 

while ((strLine = br.readLine()) != null) 
    { 
    //Test if it is a line we need 
    if(strLine.charAt(0) != ' ' && strLine.charAt(5) == ' ' 
     && strLine.charAt(10) == ' ' && strLine.charAt(15) == ' ' 
     && strLine.charAt(20) == ' ' && strLine.charAt(25) == ' ') 
     { 
     System.out.println (strLine); 
     } 
    } 

空白の行だけでなく、特定のインデックスの文字を比較して、私が行を必要としているかどうかを調べていますが、空白の行を読み込むときに文字列を取得しますインデックスが範囲外です。Javaのreadlineの空白

+2

問題を説明するコードを入力できますか? –

+0

あなたを助けるためにいくつかのコードを見る必要があります... – debracey

答えて

2

行の長さが0で、場所10の文字を判別しようとしているとします。たとえば、例外が発生します。処理する前に行がすべて空白でないかどうかを確認するだけです。

if (line != null && line.trim().length() > 0) 
{ 
    //process this line 
} 
0

空の行はNULLでなく、空の文字列 ''です。あなたがインデックス0でキャラクターを試して読むと壊れます。

while ((strLine = br.readLine()) != null) 
{ 
    //remove whitespace infront and after contents of line. 
    strLine = strLine.trim(); 

    if (strLine.equals("")) 
     continue; 

    //check that string has at least 25 characters when trimmed. 
    if (strLine.length() <25) 
     continue; 

    //Test if it is a line we need 
    if(strLine.charAt(0) != ' ' && strLine.charAt(5) == ' ' && strLine.charAt(10) == ' ' && strLine.charAt(15) == ' ' && strLine.charAt(20) == ' ' && strLine.charAt(25) == ' ') 
    { 
     System.out.println (strLine); 
    } 
} 

また、Java Scannerクラスを試してみることもできます。これはファイルの読み込みには本当に便利です。

0

あなたがここでやっていることはstrLine.charAt(25)を使用して25番目の文字までチャーターをチェックすることですが、あなたのString strLineは多くの文字を持たないかもしれません。 index引数がこの文字列の長さ以上の場合、charAt(int index)メソッドはIndexOutOfBoundsExceptionをスローします。

あなたはstrLine.length()を呼び出すことによってstrLineの長さを見つけ、その後、strLine.length() - 10からcharAt()を確認し、その例外は表示されませんすることができます。