读取管道分隔文件时导致Java Null值导致问题

时间:2011-07-13 23:34:33

标签: java arrays string

我需要读取管道分隔文件并填充它 在String数组中,将其作为列表传回并进行进一步处理 下方。

Sample data : X|ABCD|001111006|1111006|ABC|test006| | | | | |C|||||||||||||
    Note : Sample data can have both NULL and space between pipe 

如果所有管道分隔中都有数据,至少有一个空格,这个工作正常 但是对于管道之间的空值

有26个属性,只要有NULL,数组索引就不是 从可用NULL的基数增加。假设当第12个管道中存在NULL时,阵列不会被填充,直到25它在12处停止,这在我的进一步处理中是个问题

并且文件可以同时具有NULL和空格。你能帮我解决这个问题吗?

public List<String[]> readFile(String FileName) {

final List<String[]> userList = new ArrayList<String[]>(); 
BufferedReader bufferedreader = null;
try {

    int i=0;
    bufferedreader = new BufferedReader(new FileReader(FileName));
    String line = null;

     while ((line = bufferedreader.readLine()) != null) {      
          final String[] values = line.split("\\|");
          userList.add(values);   
      } 
}
catch (FileNotFoundException ex) {
    CTLoggerUtil.logError(ex.getMessage());
}
catch (IOException ex) {
    CTLoggerUtil.logError(ex.getMessage());
}
finally {
  try {
    if (bufferedreader != null)
    {
        bufferedreader.close();}
  }
  catch (IOException ex) {
      CTLoggerUtil.logError(ex.getMessage());


  }
}

 return userList;
  }

1 个答案:

答案 0 :(得分:3)

默认情况下,String.split()会丢弃空的尾随字符串。如果设置了负限制,您将获得所有空结果:

final String[] values = line.split("\\|", -1);