Java readline空格

时间:2012-02-10 04:38:30

标签: java whitespace readline

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);
      }
  }

我正在读取一个带有空白行(不仅是空格)的文件,并比较某些索引处的字符以查看是否需要该行,但是当我读入一行空格时,我得到的字符串索引超出范围。

3 个答案:

答案 0 :(得分:2)

如果该行的长度为0,并且您正在尝试确定位置10处的字符,例如您将获得异常。在处理之前,只需检查该行是否不是所有空格。

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

答案 1 :(得分:0)

空行不会为空,而是空字符串''。如果您尝试读取索引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类。它对于阅读文件非常有用。

答案 2 :(得分:0)

你在这里做的是使用strLine.charAt(25)检查章程直到第25个字符,而你的String strLine可能没有那么多字符。如果charAt(int index)参数不小于此字符串的长度,IndexOutOfBoundsException方法将抛出index

您可以通过调用strLine找到strLine.length()的长度,然后检查charAt()0strLine.length() - 1,您将看不到该异常。