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时效果很好:)