Java BufferedReader.readLine()在读取文件时返回null

Java BufferedReader.readLine()在读取文件时返回null,java,nullpointerexception,null,bufferedreader,Java,Nullpointerexception,Null,Bufferedreader,我需要一些帮助。这是我的职责: public String[] getLines(String filename) { String[] returnVal = null; int i = 0; try { BufferedReader br = new BufferedReader(new FileReader(new File(filename))); for(String line; (line = br.readLine())

我需要一些帮助。这是我的职责:

public String[] getLines(String filename) {
    String[] returnVal = null;
    int i = 0;

    try {
        BufferedReader br = new BufferedReader(new FileReader(new File(filename)));

        for(String line; (line = br.readLine()) != null; ) {
            // process the line.
            returnVal[i] = line;
            i++;
        }

        br.close();
    }
    // Catches any error conditions
    catch (Exception e)
    {
        debug.error("Unable to read file '"+filename+"'");
        debug.message(e.toString());
    }

    return returnVal;
}
它将返回字符串[]数组以及指定文件中的所有行。但我只得到异常作为返回:

java.lang.NullPointerException

当我试图打印结果时,它是空的。有什么想法吗?谢谢

您正在将值显式设置为
null

String[] returnVal = null;
因为您不知道它将包含多少元素,所以应该使用*:

ArrayList returnVal=new ArrayList();

*查看API以了解应使用哪些方法向其添加对象

您正在明确地将值设置为
null

String[] returnVal = null;
因为您不知道它将包含多少元素,所以应该使用*:

ArrayList returnVal=new ArrayList();

*查看API以了解应使用哪些方法向其添加对象

您的
returnVal
为null,
String[]returnVal=null并尝试写入它。如果您事先知道行数,则将其初始化为
returnVal=newstring[N_行],并更改循环条件以考虑读取的行数。否则,您可以使用字符串列表,并在阅读时将其追加:

List<String> returnVal = new ArrayList<>();
...
while((line = br.readLine()) != null) {
    returnVal.add(line);
}

您将
returnVal
设置为null,
String[]returnVal=null并尝试写入它。如果您事先知道行数,则将其初始化为
returnVal=newstring[N_行],并更改循环条件以考虑读取的行数。否则,您可以使用字符串列表,并在阅读时将其追加:

List<String> returnVal = new ArrayList<>();
...
while((line = br.readLine()) != null) {
    returnVal.add(line);
}

returnVal[i]
-->
returnVal为空
。您必须初始化它。
returnVal[i]
-->
returnVal为null
。你必须初始化它。谢谢这帮助了我!但是我没有显式地将返回设置为null,我只是初始化了它。但是现在使用ArrayList时效果很好:)谢谢这帮助了我!但是我没有显式地将返回设置为null,我只是初始化了它。但现在使用ArrayList时效果很好:)