Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取管道分隔文件时导致问题的Java Null值_Java_Arrays_String - Fatal编程技术网

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

读取管道分隔文件时导致问题的Java Null值,java,arrays,string,Java,Arrays,String,我需要读取管道分隔文件并填充它 在字符串数组中,将其作为列表传回并进行进一步处理 下面 如果在所有管道定界(至少一个空间)中都有可用的数据,则此操作可以正常工作, 但是对于管道之间的空值 有26个属性,只要有NULL,数组索引就不为空 从NULL可用的基数开始递增。比如说,当第12个管道上有一个空值时,数组直到25才填充,它在12处停止,这是我进一步处理中的装箱问题 并且该文件可以同时具有NULL和空格。你能帮我解决这个问题吗 public List<String[]> readFi

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

如果在所有管道定界(至少一个空间)中都有可用的数据,则此操作可以正常工作, 但是对于管道之间的空值

有26个属性,只要有NULL,数组索引就不为空 从NULL可用的基数开始递增。比如说,当第12个管道上有一个空值时,数组直到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;
  }
公共列表读取文件(字符串文件名){
最终列表userList=new ArrayList();
BufferedReader BufferedReader=null;
试一试{
int i=0;
bufferedreader=新的bufferedreader(新文件读取器(文件名));
字符串行=null;
而((line=bufferedreader.readLine())!=null){
最终字符串[]值=line.split(“\\\\”);
添加(值);
} 
}
捕获(FileNotFoundException ex){
CTLoggerUtil.logError(例如getMessage());
}
捕获(IOEX异常){
CTLoggerUtil.logError(例如getMessage());
}
最后{
试一试{
if(bufferedreader!=null)
{
bufferedreader.close();}
}
捕获(IOEX异常){
CTLoggerUtil.logError(例如getMessage());
}
}
返回用户列表;
}

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

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

默认情况下,
String.split()。如果设置了负限制,则也将返回所有空结果:

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

String.split()的文档说明,连续的定界符不作为一个定界符。您能检查一下拆分后的values.length是什么吗?String.split()的文档说,连续的定界符不作为一个定界符。你能检查一下分割后的长度值吗?谢谢,这很有效。这正是我想要的。也有空格代替空值。有什么方法可以将输入中的null保留为null,将输入中的空格保留为空格,还是不可能?非常感谢您对上述方法的帮助。您的数组将包含“”作为空格,包含“”(空字符串)作为空值。所以你可以区分两者。如果您的问题是拆分是否可以为每个空值(而不是空字符串)在数组中实际放置空值,那么我认为答案是否定的。谢谢您的帮助。这正是我想要的。也有空格代替空值。有什么方法可以将输入中的null保留为null,将输入中的空格保留为空格,还是不可能?非常感谢您对上述方法的帮助。您的数组将包含“”作为空格,包含“”(空字符串)作为空值。所以你可以区分两者。如果您的问题是拆分是否可以为每个空值(而不是空字符串)在数组中放置null,那么我认为答案是否定的。