Java BufferedReader.readLine() 读取文件时返回空值
Java BufferedReader.readLine() returning null when reading file
我需要一些帮助。这是我的功能:
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;
}
哪个应该 return me String[] 数组,其中包含指定文件中的所有行。但我只得到异常 return:
java.lang.NullPointerException
当我尝试打印结果时,结果为空。有任何想法吗?谢谢!
您明确地将值设置为 null
:
String[] returnVal = null;
由于您不知道它将包含多少个元素,因此您应该使用 ArrayList
而不是 *:
ArrayList<String> returnVal = new ArrayList<>();
* 请参阅 API 以了解应该使用哪些方法向其中添加对象
你有 returnVal
为空,String[] returnVal = null;
并试图写入它。如果您事先知道行数,将其初始化为 returnVal = new String [N_LINES];
,并更改循环条件以考虑读取的行数。否则,您可以使用字符串列表并在阅读时附加到它:
List<String> returnVal = new ArrayList<>();
...
while((line = br.readLine()) != null) {
returnVal.add(line);
}
与原始问题无关,但仍然:br.close();
应该在 finally
中,如果您使用的是 1.7,则可以受益于 try-with-resources:
List<String> returnVal = new ArrayList<>();
try(BufferedReader br =
new BufferedReader(new FileReader(new File(filename)))) {
while((line = br.readLine()) != null) {
returnVal.add(line);
}
} catch (Exception e) {
debug.error("Unable to read file '"+filename+"'");
debug.message(e.toString());
}
我需要一些帮助。这是我的功能:
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;
}
哪个应该 return me String[] 数组,其中包含指定文件中的所有行。但我只得到异常 return:
java.lang.NullPointerException
当我尝试打印结果时,结果为空。有任何想法吗?谢谢!
您明确地将值设置为 null
:
String[] returnVal = null;
由于您不知道它将包含多少个元素,因此您应该使用 ArrayList
而不是 *:
ArrayList<String> returnVal = new ArrayList<>();
* 请参阅 API 以了解应该使用哪些方法向其中添加对象
你有 returnVal
为空,String[] returnVal = null;
并试图写入它。如果您事先知道行数,将其初始化为 returnVal = new String [N_LINES];
,并更改循环条件以考虑读取的行数。否则,您可以使用字符串列表并在阅读时附加到它:
List<String> returnVal = new ArrayList<>();
...
while((line = br.readLine()) != null) {
returnVal.add(line);
}
与原始问题无关,但仍然:br.close();
应该在 finally
中,如果您使用的是 1.7,则可以受益于 try-with-resources:
List<String> returnVal = new ArrayList<>();
try(BufferedReader br =
new BufferedReader(new FileReader(new File(filename)))) {
while((line = br.readLine()) != null) {
returnVal.add(line);
}
} catch (Exception e) {
debug.error("Unable to read file '"+filename+"'");
debug.message(e.toString());
}