我需要读取管道分隔文件并填充它 在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;
}
答案 0 :(得分:3)
默认情况下,String.split()
会丢弃空的尾随字符串。如果设置了负限制,您将获得所有空结果:
final String[] values = line.split("\\|", -1);